ios开发什么情况下使用assign,copy,retain,strong,weak
程序员文章站
2022-09-28 12:01:48
1、assign:
基础类型(简单类型,原子类型):NSInteger,CGPoint,CGFloat,C数据类型(int,float,double,char等等)...
1、assign:
基础类型(简单类型,原子类型):NSInteger,CGPoint,CGFloat,C数据类型(int,float,double,char等等)
assign 适用于基本数据类型如int,float,struct等值类型,不适用于引用类型。
因为值类型会被放入栈中,遵循先进后出原则,由系统负责管理栈内存。
而引用类型会被放入堆中,需要我们自己手动管理内存或通过ARC管理。
2、copy:
含有可深度拷贝的mutable子类的类,如NSArray,NSSet,NSDictionary,NSData,NSCharacterSet,NSIndexSet,NSString
但NSMutableArray这样的不可以
3、retain:
其他NSObject和其子类对象
4、strong:
自定义对象,一般用strong
_btn = [[UIButtonalloc] init];
[self.viewaddSubview:_btn];
5、weak:
(1)用storyboard拖线的使用weak
(2)手动创建控件
UIButton *btn =[[UIButton alloc] init];
_btn = btn;
[selfaddSubview:_btn];
weak 适用于delegate和block等引用类型,
不会导致野指针问题,也不会循环引用,非常安全。