内存管理总结

1.id和instanceType区别?
id :返回值,参数类型,修饰变量
instanceType:只能作为方法和函数的返回值
优点:instanceType 能精确的限制返回值的具体返回类型
2. id和NSObject区别?
id :编译时不检测类型,不强转
NSObject:编译时检测类型,并强转
相同:都可以指向任何对象
3. id、nil、Nil、NULL、NSNULL区别?
id :一种特殊的数据类型,内部实际上是指向对象的实例变量的指针,可以指向任何对象
nil:实例对象的值
Nil:类对象的值
NULL:基本数据的空指针
NSNULL:对象
4. new
1.申请内存空间
2.初始化实例对象,并赋值
3.返回首地址
5. atmic和noatmic的区别
主要区别:编译器生产的getter&setter方法是否加锁
注意:atmic不是绝对安全,因为他仅仅对setter&getter方法加锁,
所以其他线程在操作setter或者getter时,会执行完当前操作,以保证线程安全
但是如果另外一线程操作release的话,会crash。
6. @property 的作用
@property = getter+setter+ivar
1.在.h文件中声明实例变量,setter&getter方法
2.在.m文件中自动生成实例变量,setter&getter方法
注意:我们可以手动实现setter&getter方法,不过这样的话,
我们也需要手动添加实例变量

你可能感兴趣的:(内存管理总结)