您的位置:首页 > 移动开发 > IOS开发

ios 什么情况下使用assign,copy,retain,strong,weak

2018-02-13 22:36 525 查看
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等引用类型,
不会导致野指针问题,也不会循环引用,非常安全。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: