项目要求做IOS的性能测试,无奈ios小白一个,只能去慢慢摸索了,话说连ios的手机都没摸过,惭愧,惭愧… …
系统架构:
ios和android的架构其实有些相似的,一个内核基于unix,一个是linux。
1.Cocoa Touch:
一些基本系统服务,比如多任务、触摸输入、通知推送和提供一些常用基础的api,比如联系人访问,相机,Ui的展示等
2.Media:
图形,音频、视频和airplay相关框架
3.Core Services:
核心服务,比如iCloud、内购、SQLite数据库和XML支持等
4.Core OS:
对于上层开发者很少用到,类似linux kernel,内存管理呀,进程管理啊,网络协议等等
一些特性:
统一的尺寸:3.5 4 4.7 5.5 7.9 9.7
分辨率:960x640 1136x640 1024x768 2048x1536
隐私提示
开发环境和工具:
Xcode 可以开发Mac OS X和IOS应用 对应相应的sdk版本
Interface Builder 图形化界面开发,拖动万岁
应用程序实例化过程:
main.m-实例化->AppDelegate.m-实例化->ViewController.m
和android类似,先启动activity组件,然后onCreate()方法通过setContentView初始化视图!
窗口机制简单理解:
ios中所有控件的父类是UiView(这玩意后续再学),android是View
每一个ios应用都有一个UIWindow,UIWindow里面有ViewController(理解成一个容器),然后开发过程中都是往ViewController之中添加不同的控件视图
类比android的 window–>decoreView–>很多很多view
工程目录结构:
.h头文件
.m实际代码
AppDelegate:入口类
ViewController:视图控制器
.storyboard:故事版创建的,可以有多个视图,其实就是一个xml布局(android)
新建项目:
nib、xib 其实就是xml了,对应了视图控制器和多个视图(viewgroup–view)
xcode默认新建项目就是采用storyboard模式,可以看成是多个xib的集合
stroyboard中导航(跳转)模式:
stroyboard中定义了三种跳转模式(Sqgue定义了Scene之间的跳转模式):
Push树形
Modal模态
Popover呈现浮动窗口
IOS应用的5种状态:
Not Runner非运行状态
Inactivy前台非活动状态,正在进入前台,不能接受事件
Activy前台接受事件处理状态 –forcegroundprocess - android
Background后台状态 –backgroundprocess
Suspended挂起状态 –emptyprocess
AppDelegate的生命周期:
onCreate() | willFinishLaunchingWithOptions
onStart() | didFinishLaunchingWithOptions
onRestart() | applicationDidEnterBackground
onResume() | applicationDidBecomeActive && applicationDidFinishLaunching
onPause() | applicationWillResignActive
onStop() | applicationDidEnterBackground
onDestory() | applicationWillTerminate
AppDelegate生命周期转换:
启动一个应用:notrunner–>inactive–>active didFinishLaunchingWithOptions—applicationDidBecomeActive
home键:active–>inactive–>background–>suspended applicationWillResignActive—applicationDidEnterBackground
active–>inactive–>background–>suspended–>notrunning(不保留活动) applicationWillResignActive—applicationDidEnterBackground—applicationWillTerminate
挂起重新运行:suspended–>background–>inactive–>active applicationDidEnterBackground—applicationDidBecomeActive
内存清理:background–>suspended–>notruning
视图的生命周期:
笔者:视图load完了,回调一下。view要出来了,回调一下。view已经出来了,回调一下。
然后这四个方法最常用的就是viewWillAppear、viewDidAppear、viewWillDidappear、viewDidDisappear
官方例子是:传感器会每隔设定秒回调回来,知道了view的几种状态函数后可以达到省电的目地,disappear就停止注册传感器
PS:ios6之后不再有viewDidUnload,无视,忽略。
状态保持和恢复:
当app退出或终止,要保持界面中的UI元素状态,再次打开会恢复上一次状态
ps:自带应用和googlemap测试了下都实现了这个规范,但是insta360和第三方都没有实现,输入文字kill掉进程会重新进入
.plist的属性:
一个工程只有一个Project,但是可以有一个或多个Target,可以选择不同设备运行不同target
属性可以设置支持的方向,图标,启动的屏幕(闪屏页),支持设备列表等等