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

iOS开发之weak和assign的区别

2017-07-24 16:15 190 查看
共同点:

都可以修饰对象类型的property, 不会增加其引用计数.

不同点:

1.出现时期, assign出现在ARC之前, weak出现在ARC之后;

2.可修饰的类型, assign既可以修饰对象, 又可以修饰基本类型, 而weak只能修饰对象;

3.安全性, assign修饰的对象在被销毁之后, 其指针依然存在, 容易导致野指针错误, 而weak修饰的对象销毁之后指针自动设置为nil, 不会发生危险.

总结:

在ARC时代, 应该用weak来表示弱引用, 比如代理对象, 而用assign来修饰基本数据类型, 比如int, float, double. 最后建议, 为了兼容64位CPU, 尽量避免使用C数据类型, 而应该使用Objective-C新增的数据类型, 如NSInteger, NSUInteger, CGFloat等等.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios ios开发