Objective-C属性 – 类别中强弱弱的声明

前端之家收集整理的这篇文章主要介绍了Objective-C属性 – 类别中强弱弱的声明前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Objective-C运行时如何处理在类中定义为弱的属性,但类中的私有类定义与其相同的名称和类型的属性

在类的上下文中运行的代码是否使用原始(弱)修饰符,还是使用类别定义的修饰符(强)?

例如:

Name.m

@property (weak,nonatomic) NSString *name;

NameTests.m

@interface Name (Test)
@property (strong,nonatomic) NSString *name;
@end

解决方法

属性声明中,弱只适用于合成的setter方法(如果有的话)和合成实例变量(如果有的话).如果这两者都不合成,则弱者无效.

如果setter和instance变量是合成的,那么问题是:哪个属性声明是编译器用来合成setter和instance变量?

编译器将永远不会合成在命名类别中声明的属性.所以在你的例子中,name是一个弱的属性.

猜你在找的C&C++相关文章