标签:
在objective-c中,类中的全局变量经常使用如下的方式申明。
@property(nonatomic(1),strong(2))UIImageView *imageView;
其中的1,2处是对此变量的一些属性申明。有以下几种
strong
weak
assign
strong 和 weak 是在arc后引入的关键字,strong类似于retain,引用时候会引用计算+1,weak相反,不会改变引用计数。
weak和assign都是引用计算不变,两个的差别在于,weak用于object type,就是指针类型,而assign用于简单的数据类型,如int BOOL 等。
assign看起来跟weak一样,其实不能混用的,assign的变量在释放后并不设置为nil(和weak不同),当你再去引用时候就会发生错误,崩溃,EXC_BAD_ACCESS.
block 不能修改局部变量,如果需要修改需要加上block.
block 会对对象强引用,引起retain-cycle,需要使用weak
__weak __typeof(&*self)weakSelf =self;
在block种使用weakSelf可避免这种强引用。
(两个指针,指向同一块地址(self));
starain Dou 豆电雨
原文链接:http://www.jianshu.com/p/ba49997e29c5
区别assign VS weak,__block VS __weak
标签:
原文地址:http://www.cnblogs.com/starainDou/p/5246297.html