OC必备知识
1、 runtime
1. runtime 是OC语言的特性,表明运行时。它的表现好比:定义一个数组越界,代码在编译时并不报错,可是运行后会崩溃。
2、runloop
2. RunLoop 表示一种运行着的循环
2.1 通常app启动后,若是不点击任何控件,不会生成runloop ,它默认是没有启动的;
2.2 runloop 会管理一个自动释放池的建立和释放,在一个runloop 循环结束时会实现自动释放池的释放功能
3、多线程
3. 多线程 包括进程和线程,一个进程能够包括多个线程。 分异步 、同步; 通常经常使用的有GCD 异步延迟,调用主线程 等;
4、内存管理
4. 内存
4.1 主要有代码区、堆、栈;堆中动态进行分配和释放;与堆区别较大的是,栈能够提早到编译时就肯定内存地址,而堆不少都是运行时才肯定;
4.2 iOS分ARC和MRR 自动释放,和手动释放; 主要涉及引用计数器,强引用,弱引用等知识;
4.3 能够经过Istrucements对内存泄漏进行调试;
4.4 内存吃紧时,会调用- (void) receiveMermeryWarning ; 最终会调用malloc库中的free( ) 函数
5、runtime 消息机制
5. runtime的消息机制 OC消息发送与方法发生在运行阶段,而非编阶段;obj——msgSend
6、链表寻址方式
6. 链表寻址方式 涉及到算法结构,相似快速比较, 逐个比较
7、代理,block, 通知的区别
7.主要区别
7.1 代理 OC中的代理。 代理运用分为如下几步:1.设置代理,分为必须实现,可选实现;2,设置好后要声明代理属性;3.而后在.m文件中 调用代理属性 4.在其余类中实现代理方法,5.须要先引用头文件,6设置代理;7.实现代理方法;
7.2 代理:一对一”,对同一个协议,一个对象只能设置一个代理delegate;
通知:能够一对多,注册通知中心后,不在意是否接收;而代理在意实现结果; block:block是一个代码块,它在引用时须要主要循环引用,在block外通常声明 weak self 防止循环引用html
7.3 weak asign copy strong 区别
7.3.1 使用时,assign 通常定义数据类型,strong 通常定义 模型对象;
7.3.2 strong 与 weak 的区别主要是 weak 会随之对象自己的消失而消失,而strong和copy 不会,同时,strong时引用计数器会 +1 ; copy 时 会先将旧对象release 在赋予新的对象
7.4 OC声明属性的关键词;参数 包括了:原子性;读写属性;setter语意方法; atomic多线程访问下的安全保障,可是浪费资源;nonatomic
禁止多线程,相比atomic节省资源;
<欢迎交流:gtommy0571@gmail.com>web