使用assign: 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)
使用copy: 对NSString
使用retain: 对其他NSObject和其子类
强指针Strong:
强指针:strong修饰的属性一般不会自动释放;
在OC中,对象默认是强指针,在实际开放中一般属性对象一般用strong来修饰(NSArray,NSDictionary),在使用懒加载定义控件的时候,一般也用strong
@property (nonatomic, strong) NSArray *dataList;
@property (nonatomic, strong) NSDictionary *Dict;
弱指针Weak:
@property (weak, nonatomic) IBOutlet UILabel *label; Xib拉线就会出来
原因是由于在向 xib 或者 sb 里面添加控件的时候,添加的子视图是添加到了跟视图 View 上面, 而 控制器 Controller 对其根视图 View 默认是强引用的,当我们的子控件添加到 view 上面的时候, self.view addSubView: 这个方法会对添加的控件进行强引用,如果在用 strong 对添加的子控件进行修饰的话,相当于有两条强指针对子控件进行强引用, 为了避免这种情况,所以用 weak 修饰.
1. addSubView 默认对其 subView 进行了强引用
2.在纯手码实现界面布局时,如果通过懒加载处理界面控件,需要使用strong强指针
除此之外,我们在开发的时候用的代理 也是用 weak 进行修饰的,其目的是为了防止控件的循环引用.
@property (nonatomic, weak) id delegate;
Copy的使用
对于 copy 的使用,网上已经有很多关于 copy 介绍, 其包括深 copy 和浅 copy, 在这里我就不再多说了,如果不太明白的话可以网上查一下资料
copy 一般用来修饰 NSString 和 block
@property (nonatomic, copy) NSString *str;