UI控件使用weak还是Strong
XIB OR StoryBoard创建控件时
- 使用
Xib
或者StoryBoard
的时候使用weak修饰控件,是因为当控件拖到控制器中时,控制器对控件就有了一个强引用
.如果此时对属性控件使用Strong
修饰就会使该控件的引用计数器
变为2,当控制器释放的时候,控件依旧可以被释放,不会产生内存泄漏问题. - weak的底层实现
weak(可以替换strong) 本质是让_car指针变为一个弱指针(循环引用才会使用!)
-(void)setCar:(LWCar*)car{
__weak _car = car;//弱指针
}
纯代码创建控件时
- 使用纯代码的时候使用Strong,Strong的本质只是赋值(ARC)
- Strong的底层实现
-(void)setCar:(LWCar*)car{
_car = car;
}
@property(nonatomic,strong)UILabel *label;
UILabel *label = [[UILabel alloc] init];
self.label = label;
[self.view addSubview: label];
这个也不会有内存泄漏的问题.
网友评论