最近我将我的Xcode升级到版本7 - XCode 7.0。现在我收到了我的每个IBOutlet的消息:
@property (nonatomic, weak, nonnull) IBOutlet UITableView *tableView;
属性属性'nonnull'和'weak'是互斥的
我能做什么?
答案 0 :(得分:14)
weak
的重点是,当对象被释放时,属性变为nil
。 nonnull
的重点是该属性永远不会是nil
。这就是为什么你不能同时申请这两个原因。
使您的媒体资源strong nonnull
或weak
。
答案 1 :(得分:0)
为了完整起见,我想我应该在这里添加第二个答案。如果一个属性有自定义的getter和setter,那么弱者和nonnull并不是真正相互排斥的。例如:
@property(...) Foo *foo;
- (Foo *)foo {
if (_foo) return _foo;
return [Foo sharedInstance];
}
- (void)setFoo:(Foo *)newFoo {
assert(newFoo);
_foo = newFoo;
}
但是也没有充分的理由允许这样做,因为没有充分的理由不允许将变量设置为nil以将其重置为默认值。当您这样做时,指定null_resettable
属性。