我们可以对同一IBOutlet使用Strong和Retain吗? 如果我们这样做会发生什么?
像这样的事情 @property(保留,强壮)NSNumber * property;
答案 0 :(得分:1)
如果使用的是ARC,将获得相同的效果。不管您使用的是strong
还是retain
属性。
ARC不必评估何时使用保留,释放和自动释放,而是可以评估对象的生存期要求,并在编译时自动为您插入适当的内存管理调用。编译器还会为您生成适当的dealloc方法。 通常,如果仅使用ARC,则仅当您需要与使用手动引用计数的代码进行互操作时,传统的Cocoa命名约定才重要。
答案 1 :(得分:1)
我们可以对同一个IBOutlet使用Strong 和保留吗?如果我们这样做会发生什么?
[已添加重点]
假设使用ARC,但可能没有什么区别:
是的,并且编译器的行为就像您只键入其中之一(它们是同义词)一样。
实际上,只要您编写不兼容的组合,例如,
,编译器似乎就不会介意键入属性的频率@property (copy, copy, copy, copy) NSNumber *copiedProperty;
@property (retain, strong, retain, strong) NSNumber *strongProperty;
被接受(并产生与仅包含一个copy
或retain
/ strong
的等效声明相同的代码)!但是:
@property (weak, copy) NSNumber *willProduceAnErr;
不是因为它没有意义。