1

我用:

@property(nonatomic, weak) IBOutlet UIView *videoView;

有一个警告:

属性 'videoView' 需要定义方法 'videoView' - 使用 @synthesize、@dynamic 或在此类实现中提供方法实现

然后我尝试:

@synthesize videoView;

有一个错误:

当前部署目标不支持自动 __weak 引用。

还有一个问题:

@property(nonatomic, unsafe_unretained) IBOutlet UIView *videoView;

- (void)dealloc {
    videoView = nil;
}

我可以用这种方式吗?

4

2 回答 2

3

当前部署目标不支持自动 __weak 引用。

问题是 iOS 4.x 不支持自动归零弱引用。这意味着,当弱引用对象被销毁时,弱引用会继续指向它,如果使用它可能会导致崩溃。

iOS 5 和更新版本支持自动归零弱引用。要利用它们并清除上面的警告,请将您的最低 iOS 目标提高到 5.0,并使用 5.0 SDK。

于 2012-08-09T13:06:18.987 回答
1

您的部署目标是什么?您至少需要 iOS4 才能获得weak引用,并且您需要将 LLVM4 与 Xcode4.4 或更高版本一起使用才能声明您的@property变量而不必提供@synthesize.

至于第二个问题 - 你想要做什么。如果您只是想在 dealloc 上安全地将变量设置为 nil,那么没关系,因为您声明它是因为unsafe_unretained您不拥有它,所以您不应该释放它。

于 2012-08-09T12:49:57.803 回答