ios 必备知识

 

OC必备知识


一、 runtime

1. runtime 是OC语言的特性,代表运行时。它的表现比如:定义一个数组越界,代码在编译时并不报错,但是运行后会崩溃。

二、runloop

2. RunLoop 表示一种运行着的循环

2.1 一般app启动后,如果不点击任何控件,不会生成runloop ,它默认是没有启动的;

2.2 runloop 会管理一个自动释放池的创建和释放,在一个runloop 循环结束时会实现自动释放池的释放功能

三、多线程

3. 多线程 包括进程和线程,一个进程可以包括多个线程。 分异步 、同步; 一般常用的有GCD 异步延迟,调用主线程 等;

四、内存管理

4. 内存

4.1 主要有代码区、堆、栈;堆中动态进行分配和释放;与堆区别较大的是,栈可以提前到编译时就确定内存地址,而堆很多都是运行时才确定;

4.2 iOS分ARC和MRR 自动释放,和手动释放; 主要涉及引用计数器,强引用,弱引用等知识;

4.3 可以通过Istrucements对内存泄漏进行调试;

4.4 内存吃紧时,会调用- (void) receiveMermeryWarning ; 最终会调用malloc库中的free( ) 函数

五、runtime 消息机制

5. runtime的消息机制 OC消息发送与方法发生在运行阶段,而非编阶段;obj——msgSend

六、链表寻址方式

6. 链表寻址方式 涉及到算法结构,类似快速比较, 逐个比较

七、代理,block, 通知的区别

7.主要区别

7.1 代理 OC中的代理。 代理运用分为以下几步:1.设置代理,分为必须实现,可选实现;2,设置好后要声明代理属性;3.然后在.m文件中 调用代理属性 4.在其他类中实现代理方法,5.需要先引用头文件,6设置代理;7.实现代理方法;

7.2 代理:一对一”,对同一个协议,一个对象只能设置一个代理delegate;

通知:可以一对多,注册通知中心后,不在乎是否接收;而代理在乎实现结果; block:block是一个代码块,它在引用时需要主要循环引用,在block外一般声明 weak self 防止循环引用

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>

posted on 2016-05-15 22:13  Tony0571  阅读(132)  评论(0编辑  收藏  举报

导航