IOS内存管理一直是头疼的问题,有时间做些简单的笔记
使用assign: 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)
· 使用copy: 对NSString
· 使用retain: 对其他NSObject和其子类
l nonatomic关键字:
atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。
iOS 5 中对属性的设置新增了strong 和weak关键字来修饰属性(iOS 5 之前不支持ARC)
l strong关键字:
strong 用来修饰强引用的属性;对应原来的retain。
该属性值对应 __strong 关键字,即该属性所声明的变量将成为对象的持有者。
l weak关键字:
weak 用来修饰弱引用的属性;对应原来的assign。
但是不同的是当对象被释放以后,对象自动赋值为nil;并且,delegate 和 Outlet苹果推荐用 weak 属性来声明。同时,如上一回介绍的 iOS 5 之前的版本是没有__weak 关键字的,所以 weak 属性是不能使用的。这种情况我们使用unsafe_unretained。
为单独文件指定是否使用ARC
当你迁移一个久工程到ARC模式下, -fobjc-arc
编译开关被默认的设置在所有的Objective-C 源代码上。 你可以使用-fno-objc-arc
来为特殊的class停用ARC 。在Xcode的 target的“Build Phases”标签, 打开Compile Sources group,展开源代码列表, 双击你想要修改的源代码的名字,再弹出框里输入-fno-objc-arc
,然后点Done按钮。