iOS开发之weak和assign的区别

共同点:
都可以修饰对象类型的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等等.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值