0

我有一堂课:

@interface MyClass : NSObject
@property (weak) id delegate;
@end

和实施:

@implementation MyClass
@synthesize delegate;
@end

当我为 ARC 重构代码时,它告诉我只允许在 ARC/GC 模式下合成“弱”属性。但据我所知,委托在 ARC 中可能是“弱”的,而且,如果我将其更改为分配,那么它将被转换为 unsafe_unretained。

我的问题是,这是否意味着转换(到 ARC)之前的代码不应该使用任何 ARC?

谢谢!

4

1 回答 1

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 将指向坏(已释放)内存。

于 2013-06-10T21:04:03.350 回答