1.iOS介绍
iOS的系统架构分为4层:Cocoa Touch层,Media层,Core Service层和Core OS层。
2.Xcode中的iOS模板:Application,Framework&Library 和 Other
3.故事板中的Scene和Segue
每个视图控制器都会对应一个Scene,Scene翻译为“场景”,可以理解为应用的一个界面或屏幕,在这个屏幕中又很多视图或控件,相当于一个xib。这些Scene之间通过Segue连接,Segue不但定义了Scene之间的跳转(或导航)方式,还体现了Scene之间的关系。跳转的类型分为:Push,Modal,Popover和自定义方式。Scene跳转类型还要跟具体的控制器结合使用。Push是树形导航模式,Mode是模态导航模式,Popover是呈现浮动窗口
4.iOS应用的5种状态
Not Running(非运行状态):应用没有运行或被系统终止。
Inactive(前台非活动状态):应用正在进入前台状态,但是还不能接受事件处理。
Active(前台活动状态):应用进入前台状态,能接受事件处理
Background(后台状态):应用进入后台后,依然能够执行代码。如果代码执行完毕,应用进入挂起状态
Suspended(挂起状态):处于挂起的应用进入一种“冷冻”状态,不能执行代码,如果系统内存不够,应用会被终止
4.1 非运行状态—应用启动场景:
用户点击应用图标的时候,可能是第一次启动这个应用,也可能是应用终止后再次启动:Not running –>Inactive->Active
Not running ->Inactive:调用application:didFinishLaunchingWithOptions:方法,发出UIApplicationDidFinishLaunchingNotification通知
Inactive->Active:调用applicationDidBecomeActive:方法,发出UIApplicationDidBecomeActiveNotification通知
4.2 点击Home键 – 应用退出场景
应用处于运行状态(Active状态)时,点击Home键或者有其他的应用导致当前应用中断。该场景的状态跃迁过程可以分成两种情况:可以在后台运行或者挂起,不可以在后台运行或者挂起。根据产品属性文件(info.plist)中的相关属性Application does not run in background是与否可以控制这两种状态。
状态跃迁的第一种情况:Active -> Inactive -> Background -> Suspended
l 在Active –> Inactive阶段:调用applicationWillResignActive:方法,发出UIAppplicationWillResignActiveNotification通知
l 在Inactive -> Background阶段:应用从非活动状态进入到后台
l 在Background -> Suspended阶段。调用applicationDidEnterBackground:方法,发出UIApplicationDidEnterBackgroundNotification通知。
状态的第二种情况:应用不可以在后台运行或者挂起:Active -> Inactive ->Background -> Suspended -> Not running
l Active ->Inactive阶段:应用由活动状态转为非活动状态
l Inactive -> Background阶段:应用从非活动状态进入到后台
l Background –> Suspended阶段:调用applicationDidEnterBackground:方法,发出UIApplicationDidEnterBackgroundNotification通知。
l 在Suspended -> Not running阶段:调用applicationWillTerminate:方法,发出UIApplicationWillTerminateNotification通知。
4.3 挂起重新运行场景:Suspended -> Background -> Inactive ->Active
l Suspended -> Background阶段:应用从挂起状态进入后台
l Background -> Inactive 阶段:调用applicationWillEnterForeground:方法,发出UIApplicationWillEnterForegroundNotification通知。
l Inactive –> Active阶段:调用applicationDidBecomeActive:方法,发出UIApplicationDidBecomeActiveNotification通知。
4.4 内存清除—应用终止场景
应用在后台处理完成时进入挂起状态,如果这时发出低内存警告,为了满足其他应用对内存的需要,该应用就会被清除内存从而终止运行。
内存清除的时候应用终止运行。内存清除有两种情况,可能是系统强制清除内存,也可能是由使用者从任务栏手动清除(即删掉应用)。内存清除后如果应用再次运行,上一次的运行状态不会被保存,相当于应用第一次运行。
在内存清除场景下,应用不会调用任何方法,也不会发出任何通知。
iOS6后,低内存情况下,iOS不在使用viewDidUnload:而仅支持didReceiveMemoryWarning:方法,主要释放内存,包括视图控制器中的一些成员变量和视图的释放。
5.iOS UI状态保持和恢复
可以在以下三种地方实现状态保持和恢复:
应用程序委托对象,视图控制器,自定义视图
其中application:shouldSaveApplicationState:方法在应用退出时调用,父子控制器是否允许保存状态,返回YES情况是可以保存,NO是不保存
application:shouldRestoreApplicationState:方法在应用启动时调用,负责控制是否恢复上次退出时的状态,返回YES情况是可以恢复,返回NO表示不可以恢复
application:willEncodeRestorableStateWithCoder:方法在保存时调用,在这个方法中实现UI状态或数据的保存,其中[coder encodeFloat:2.0 forKey:@"Version"]语句是保存简单数据
application:didDecodeRestorableStateWithCoder:方法在恢复时调用,在这个方法中实现UI状态或数据的恢复,其中[coder decodeFloatForKey:@"Version"]语句用于恢复上次保存的数据
在iOS6之后,视图控制器添加两方法encodeRestorableStateWithCoder:和decodeRestorableStateWithCoder:,用来实现改控制器中的控制或数据的保存和恢复。
6.设置产品属性
一个工程只有一个Project,但可以有多个Target;
添加Target:File -> New ->Target
6.1 设定屏幕方向
target 的summary选项卡,Supported Inteface Orientations区域四个方向备选,也可以在info.plist中设置
6.2 设置应用图标 :App Icons
6.3 设置启动屏幕 :Launch Images
6.4 设置设备支持情况:Device