标签:
1、iOS的系统架构分为4层——Cocoa Touch层、Media层、Core Services层和Core OS层。
2、自动布局(Auto Layout)最先应用于Mac 0S X 10.7的开发,它为视图布局定义一套约束,而约束定义了两个界面中视图之间的关系。
3、AppDelegate是应用程序委托对象,继承了UIResponder类,并实现了UIApplicationDelegate委托协议。前者使子类AppDelegate具有处理相应时间的能力,而后者委托协议使其能够成为应用程序委托对象,这种对象能够响应应用程序的生命周期。相应的,AppDelegate的子类也能够实现这两个功能。
4、ViewController类继承自UIViewController类,它是视图控制器类,在工程中扮演着根视图和用户事件控制类的角色。
5、nib等同于xib。一般而言,一个工程中可以有多个xib文件,一个xib文件对应着一个视图控制器和多个视图,而使用故事版时,一个工程只需要一个故事板文件就可以了。故事板还可以描述界面之间的导航关系。 事实上,故事板是多个xib文件集合的描述文件,也采用xml格式。
6、应用的生命周期:作为应用程序的委托对象,AppDelegate类在应用生命周期的不同阶段会回调不同的方法。
下面简要介绍下iOS应用的的5种状态。
Not Running(非运行状态)。应用没有运行或被系统终止。
Inactive(前台非活动状态)。应用正在进入前台状态,但是还不能接受事件处理。
Active(前台活动状态)。应用进入前台状态,能接受事件处理。
Background(后台状态)。应用进入后台后,依然能够执行代码。如果有可执行的代码就会执行代码,如果没有可执行的代码或者将可执行的代码执行完毕,应用会马上进入挂起状态。
Suspended(挂起状态)。处于挂起的应用进入一种“冷冻“状态,不能执行代码。如果系统内存不够,应用会被终止。
在应用状态跃迁的过程中,iOS系统会回调AppDelegate中的一些方法,并且发送一些相应的通知:
application:didFinishLaunchingWithOptions:应用启动并进行初始化时会调用该方法并发出通知,这个阶段会实例化根视图控制器。
applicationDidBecomeActive:应用进入前台并处于活动状态时调用该方法并发出通知。这个阶段可以恢复UI的状态。
applicationWillResignActive:应用从活动状态进入到非活动状态时调用该方法并发出通知。这个阶段可以保存UI的状态。
applicationDidEnterBackground:应用进入后台时调用该方法并发出通知。这个阶段可以保存用户数据,释放一些资源(例如数据库资源等)
applicationWillEnterForeground:应用进入到前台,但是还没有处于活动状态时调用该方法并发出通知。这个阶段可以恢复用户数据。
applicationWillTerminate:应用被终止时调用该方法并发出通知,但内存清除时除外。这个阶段释放一些资源,也可以保存用户数据。
下面我们以几个应用场景为切入(具体分析就不写了,相信大家肯定也都能理解):
应用启动场景:Not running→Inactive→Active
应用退出场景:该场景的状态跃迁过程可以分为两种情况,可以在后台运行或挂起和不可以。根据产品属性文件中的相关属性Application does not run in background可以控制这两种这两种状态。
(1)应用可以在后台运行或挂起:Active → Inactive → Background→Suspended
(2)应用不可以在后台运行或挂起:Active → Inactive → Background→Suspended→Not running
挂起重新运行场景:Suspended → Background → Inactive → Active
内存清除-应用终止场景: Background→Suspended→Not running
7、视图生命周期
在视图不同的生命周期中,视图控制器会回调不同的方法。
在视图控制器已被实例化,视图被加载到内存中时调用viewDidLoad方法,这个时候视图并未出现。在该方法中,通常进行的是对所控制的视图进行初始化处理。
视图可见前后会调用viewWillAppear:方法和viewDidAppear:方法。视图不可见前后会调用viewWiiDisappear:和viewDidDisappear:方法。4个方法调用父类相应的方法以实现其功能,编码时该方法的位置可根据情况做以调整,如下:
1 -(void)viewWillAppear:(BOOL)animated 2 { 3 [super viewWillAppear:YES]; ???? 4 }
viewDidLoad方法在应用运行的时候只调用一次,而上述4个方法可以被反复调用多次,他们的使用很广泛但同时也具有很强的技巧性。
在低内存情况下,iOS会调用didReceiveMemoryWarning:和viewDidUnload:方法。iOS6以后就不再使用viewDidUnload:。didReceiveMemoryWarning:方法的主要职能是释放内存,包括视图控制器中的一些成员变量和视图的释放。如下:
1 - (void)didReceiveMemoryWarning { 2 self.button = nil; 3 self.myStringD = nil; 4 [myStringC release]; 5 [super didReceiveMemoryWarning]; 6 }
7.1、iOS6 UI状态保持和恢复,即当应用退出的时候,需要保持界面中UI元素的状态,再次进来的时候看到的状态与退出时是一样的。
在iOS6中,我们可以在以下3中地方实现状态保持和恢复:应用程序委托对象,视图控制器,自定义视图。
8、设置产品属性,在Xcode中,产品与Target直接相关,而Target与Project直接相关。
8.1、产品属性包括Project和Target两块内容。一个工程只能有一个Project,但可以有一个或多个Target。
8.2、Target继承了Project。对于Target和Project下都有的设置项,可根据需要对Target进行再设置,此设置可覆盖Project的设置。以下为大家介绍下4个常用的产品属性。
8.2.1、设定屏幕方向。Target文件-->Device Orientations或者直接在plist文件中修改。
8.2.2、设置应用图标。Target文件-->App Icons Source-->Images.xcassets-->AppIcon,图片名可以不做修改,因为Xcode会自动给图标改名,但文件格式(PNG)和大小一定要按照要求设定。普通App Icons的图片大小为57×57像素,名称为Icon.png。Retina显示屏App Icons的图片大小为114×114像素,名称为Icon@2×.png。
8.2.3、设置启动屏幕。启动屏幕是应用启动时一闪而过的图片。Target-->Launch Images Source-->Images.xcassets-->LaunchImage。对于普通的iPhone设备,这个图片的大小为320×480,文件以Default.png,Retina显示技术设备的图片大小为640×960像素,文件名为Default@2×.png。
8.2.4、设置设备支持情况。Target-->Device,从中选择iPhone、iPad或者Universal选项,其中Universal表示同事支持iPhone和iPad设备。
9、iOS API简介。
9.1、第一条我们已经提到了iOS的整体架构组成,一共分为4层--Cocoa Touch层、Media层、Core Services层和Core OS层。
Cocoa Touch层。该层提供了构建iOS应用的一些基本系统服务(如多任务、触摸输入和推送通知等)和关键框架。
Media层。该层提供了图形、音频、视频和AirPlay技术。
Core Services层。该层提供了iCloud、应用内购买,SQLite数据库和XML支持等技术。
Core OS层。该层提供了一些低级功能,例如重力加速计、蓝牙等技术,开发中一般不直接使用它。
9.2、如果使用API帮助。
假设我们对于didReceiveMemoryWarning这个方法有很多疑惑,我们可以尝试下面几种方法查找帮助文档。
9.2.1双击选择该方法,然后选择右边的Show Quick Help Inspecter查看,下面还包括案例介介绍。
9.2.2、option+双击该方法可以打开一个Xcode的API帮助文档,这个比较完整、全面。
资料:《iOS开发指南》
标签:
原文地址:http://www.cnblogs.com/CookieJar/p/4826552.html