如果在类扩展中重新定义属性的内存管理会发生变化吗?

Win*_*ero 5 memory-management objective-c declared-property

如果我有这样的属性:

//test.h

@interface test
@property (nonatomic, readonly, weak) NSObject x;
@end
Run Code Online (Sandbox Code Playgroud)

在实现文件中重新定义为可读/写:

// test.m
@interface test ()
@property (nonatomic, readwrite) NSObject x;
@end
Run Code Online (Sandbox Code Playgroud)

我在.h中使用弱,但我在扩展中没有说什么,属性是否会保留"弱"说明符,还是会变为"强"?

重新定义属性时,是否会覆盖关键字strong/assign/weak?

CRD*_*CRD 5

使用Xcode 5.1.1进行的简单测试显示了该weak属性.对于assignstrong属性也是如此- 你可以在中指定它们.h并省略它们.m,如果你确实将它们包括在.m两个必须匹配中.

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

建议:重复一遍.