加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:58:39 所属栏目:百科 来源:网络整理
导读:Objective-C运行时如何处理在类中定义为弱的属性,但类中的私有类定义与其相同的名称和类型的属性? 在类的上下文中运行的代码是否使用原始(弱)修饰符,还是使用类别定义的修饰符(强)? 例如: Name.m @property (weak,nonatomic) NSString *name; NameTests.m
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是一个弱的属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读