1.pch文件中的代码是全局的,不管是#import头文件还是#define宏,都可以在项目中的所有文件中使用。(凡是涉及到OC语法的内容都要放入到#ifdef __OBJC__ #endif中)。
2.pch中最好使用下面的宏对NSLog函数进行替换,在发布的时候直接将后部的NSLog进行注释则代码中不会打印任何值。
#define MyLog(...) NSLog(__VA_ARGS__)
3.IOS在未打包状态的时候会默认有一个DEBUG宏,在打包后则会自动删除,可以利用判断来优化上方代码。
#ifdef DEBUG #define MyLog(...) NSLog(__VA_ARGS__) #else #define MyLog(...) #endif
4.函数的外部声明:extern type name();
5.UIapplication是单例模式,只能通过sharedApplication方法获得,如果alloc init会报错。
6.获得UIApplication对象后可以修改各种属性
[application openURL:[NSURL URLwithString:@""]]
7.AppDelegate类即UIApplication的delegate对象,并且已经建立好连接了。(在实现文件中有定义好的方法,有英文注释)。
8.UIWindow是一种特殊的UIView,通常一个App只有一个UIWindow。
9.IOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的View,最后将控制器的View添加到UIWindow上面。
10.给UIWindow添加ViewController的时候选择rootViewController属性进行赋值,如果使用addSubview可能会出现野指针。
11.旋转事件发生的时候会首先有UIApplication知道,然后通知UIWindow,再由UIWindow通知自己的rootViewController。如果使用addSubview则没有效果。
12.[UIScreen mainScreen]可以获得屏幕的信息,给UIWindow的frame赋值mainScreen的bounds属性则可以使UIWindow布满屏幕并且x,y为0,0;
13.[self.window makeKeyAndVisible]是使self.window变为主窗口(KeyWindow)并且显示。makeKeyWindow方法则只是变为主窗口。
14.非KeyWindow的时候窗口的子控件TextField不能输入值(IOS7以前)
14.程序启动的完整过程
1.main函数
2.UIApplicationMain
* 创建UIApplication对象
* 创建UIApplication的delegate对象
3.delegate对象开始处理(监听)系统事件(没有storyboard)
* 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法
* 在application:didFinishLaunchingWithOptions:中创建UIWindow
* 创建和设置UIWindow的rootViewController
* 显示窗口
3.根据Info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard)
* 创建UIWindow
* 创建和设置UIWindow的rootViewController
* 显示窗口
由于本阶段学习目的为初步熟悉IOS,所有知识点不做深入,仅以灰色标注在意的知识点,当有空的时候回头再议。