如果在 class 扩展中重新定义,属性的内存管理是否会发生变化?

Can the memory management of a property change if it's redefined in a class extension?

如果我有这样的房产:

//test.h

@interface test
@property (nonatomic, readonly, weak) NSObject x;
@end

在实现文件中重新定义为read/write:

// test.m
@interface test ()
@property (nonatomic, readwrite) NSObject x;
@end

我在.h中使用了weak,但我在扩展中什么也没说,属性会保留'weak'说明符,还是会变成'strong'?

重定义属性时关键字strong/assign/weak会被覆盖吗?

使用 Xcode 5.1.1 的简​​单测试显示 weak 属性被保留。 assignstrong 属性也是如此 - 您可以在 .h 中指定它们并在 .m 中省略它们,如果您在 [=] 中包含它们14=] 两者必须匹配。

话虽如此,我不知道这是否有记载。但是 Objective-C 的语义也没有在任何地方正式定义。所以使用风险自负。

建议:重复一遍即可。