iOS的copy,strong,weak,assign关键字的使用,网罗下来大概总结一下

时间:2022-05-03 17:05:08
ARC模式• 1> copy : 只用于NSString\block • 2> strong : 除NSString\block以外的OC对象 • 3> weak : 当2个对象相互引用,一端用strong,一端用weak (storyboard和xib上创建的控件就是这样,xib/sb是强引用,拉线过来声明的属性对它是弱引用。) • 4> assgin : 基本数据类型、枚举、结构体(非OC对象)
1. 从storyboard或者xib上创建控件,在控件放在view上的时候,已经形成了如下的引用关系,以UIButton为例:
@property(nonatomic,weak) IBOOutlet UIButton *btn;
相当于xib/sb对这个Button是强引用,你声明的属性对它是弱引用。

2.手动创建控件
a). 将控件声明成strong
@property(nonatomic,strong) UIButton *btn;
那么你在实现这个控件时只需这样:
_btn = [[UIButton alloc]init];
[self.view addSubview:_btn]

b). 将控件声明成weak
@property(nonatomic,weak) UIButton *btn;
那么你在实现这个控件时需要这样:
UIButton *button = [[UIButton alloc]init];
_btn = button;
[self.view addSubview:_btn];