Objective-C运行时如何处理weak在类中定义的属性,但类上的私有类定义了与其名称和类型相同的属性strong?
在类别上下文中运行的代码是使用原始(弱)修饰符,还是会使用类别定义修饰符(强)?
例如:
Name.m
@property (weak, nonatomic) NSString *name;
Run Code Online (Sandbox Code Playgroud)
NameTests.m
@interface Name (Test)
@property (strong, nonatomic) NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)
在属性声明中,weak仅适用于合成的 setter 方法(如果有)和合成的实例变量(如果有)。如果两者都没有合成,则weak没有效果。
如果setter和实例变量是合成的,那么问题是:编译器使用哪个属性声明来合成setter和实例变量?
编译器永远不会合成在命名类别中声明的属性。所以在你的例子中,name是一个弱属性。
| 归档时间: |
|
| 查看次数: |
606 次 |
| 最近记录: |