准备工作之余,还是妄想着写些什么,一来可以加强自己的记忆,二来可以分享给大家看看,希望大家提出建议,补充补充,一起进步。下面是我看了一些资料对iOS复习要点的一些总结,说是原创,其实也是从不同的地方阅读来,自己做个总结。因为实在是大量记在笔记本上的,也不记得出处,若有版权问题,请回复我,若真实,必定加上链接(依稀记得有些从 http://www.itmian4.com/ 看来)。
- ARC和None-ARC在内存管理上的区别
- ARC在什么情况下会出现内存泄露
strong未置nil/presentViewController的使用/观察者模式下。 - Tool-Free Bridge
Core Foundation和Foundation的数据类型可以用bridge进行相互转化,如NSString CFString。 - extension和category的区别
category扩展一个类而不重新创建类,但只能用于扩展方法而不能为该类增加成员变量;
extension是匿名的category,extension的声明方法必须在main implementation中实现。 - category与继承的区别
继承:增删改 - objective-C类不可以定义私有方法,可以用定义空类别的方法:
<span style="font-size:14px;"><span style="font-size:12px;">@interface MyClass() -(void)privateMethod; @end</span></span>
- property属性nonatomic和atomic的区别
noatomic表示禁止多线程,不对变量进行保护,提高性能;
atomic表示原子操作,为了适应多线程。 - strong和weak
strong表示占有,weak表示弱弱联系,没有strong指针指向时就回收。 - assign和retain
p1 p2都指向对象a,若指针都使用assign,则p1不用时,释放资源a;
若指针都是用retain,对a计数,现在为2,若p1释放,计数减一,p2释放,继续减一,计数为零释放资源a。 - 强循环引用造成内存泄露问题(NSTimer)
weak在对象释放之后置为nil;
使用block解决。 - iOS多线程有哪些,区别是什么
NSThread最简单,轻量级;需要自己挂历线程的生命周期,线程同步,数据锁操作会有一定的开销;
NSOperation/NSOperationQueue 方便设置线程依赖,可以创建并在第一时间取消,可以设置同一时间线程操作数目;
GCD(Grand Central Dispatch)线程池。 - Runloop是线程中的循环
Runloop作用和原理 - CoreData
CoreData使用fault机制,进行惰性加载。 - OC语言的特点
不支持多重继承,使用消息传递的方式进行函数调用,OC是动态类型(id)。
- 接口protocol和virtual区别
- iOS crash后的调试方法,crash的检测,log
- iOS回调的实现
观察者模式/协议和委托 - #import和#include区别
#import不会导致交叉编译 - id声明的特性
没有*
动态数据类型
可以指向任何类的对象而不关心具体类型
在运行时检查具体类型
可以对其发送任何存在的消息 - Cocoa没有虚基类,没有多继承
- [pool release] [pool drain]区别
drain在又GC的环境中会引起GC的回收,没有GC两者相同 - notification KVO
个人觉得,两者都是同步机制,都通过阻塞来实现同步。 - 响应者链的理解