现在默认合成属性。编译器将使用属性名称加下划线前缀来创建ivar。默认情况下,实例变量具有强存储类型,因此默认情况下属性强。那么为什么属性需要一个强大的关键字(看到很多人明确指定它)。是否存在财产薄弱的情况?
对不起,如果它似乎是一个菜鸟问题。
编辑:IBOutlet,代表应该是弱者,除了弱者之外的任何其他财产。
答案 0 :(得分:2)
默认情况下,属性为strong
和atomic
。
明确地键入它更多是出于可读性的目的。
有时您应该使用weak
属性。代表,IBOutlets等......
但 明确声明这些内容。
答案 1 :(得分:1)
我还要添加block
属性要求您明确指定所有权的其他答案
通常您需要copy
块(strong
在ARC下正常工作,但必须在MRC下使用copy
答案 2 :(得分:0)
通常,IBOutlets会自动看到弱引用,因为视图本身具有强引用。还有许多其他用例。这是为了防止保留周期。
Avoiding circular retention using ARC (strong/weak), learning some basics
修改: 更多信息可以在这里找到,并且在专门查找除IBOutlets和代表之外的弱引用的示例之前应该完全理解。理解为什么每一个通常都是弱引用会导致对应该或不应该弱的内容的解释。
答案 3 :(得分:0)
观点和代表几乎总是很弱。
视图应该只有超级视图的强引用。 代表们应该关心他们的工作已经完成。