属性属性'nonnull'和'weak'是互斥的

时间:2015-09-17 17:02:52

标签: ios objective-c xcode7

最近我将我的Xcode升级到版本7 - XCode 7.0。现在我收到了我的每个IBOutlet的消息:

@property (nonatomic, weak, nonnull) IBOutlet UITableView *tableView;

属性属性'nonnull'和'weak'是互斥的

我能做什么?

2 个答案:

答案 0 :(得分:14)

weak的重点是,当对象被释放时,属性变为nilnonnull的重点是该属性永远不会是nil。这就是为什么你不能同时申请这两个原因。

使您的媒体资源strong nonnullweak

答案 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属性。