微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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是一个弱的属性.

原文地址:https://www.jb51.cc/c/113153.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐