我有一个班级:
@interface MyClass : NSObject
@property (weak) id delegate;
@end
和实施:
@implementation MyClass
@synthesize delegate;
@end
当我重构ARC的代码时,它告诉我只能在ARC / GC模式下合成'weak'属性。但据我所知,委托可以在ARC中“弱”,如果我将其更改为assign,那么它将被转换为unsafe_unretained。
我的问题是,是否意味着转换前的代码(到ARC)不应该使用任何ARC?
谢谢!
答案 0 :(得分:0)
听起来你可能会定位iOS 4.x
4.x添加了ARC,但不是iOS5 +获得的完整ARC。 iOS 4.x arc不支持“weak”关键字,只有unsafe_unretained。如果你想使用weak而不是unsafe_retained,你将不得不放弃iOS 4支持。
“weak”和“unsafe_unretained”之间的区别在于weak会在释放时将自己设置为nil,而unsafe_unretained会指向坏(已释放)的内存。