![](/img/trans.png)
[英]In Objective-C, why class-continuation can add instance variables but class category can't?
[英]What is an Objective-C “class continuation”?
我无法弄清楚我所看到的被称为 Objective-C “类继续”的东西 。 这是/这些......
@implementation
( .m
)文件中声明了吗? 那说......
@property
的合适位置吗? 为什么这个设置ivars或属性的地方比@interface
文件/声明更好? 问题在Objective-C中,在头文件中定义某些东西(比如属性)而不是.m文件有什么区别? 讨论涉及这个问题,但有点只是进一步解决问题 - 或者至少未能提供该术语的规范参考/定义......因此这个问题。
延续类是Apple称为类扩展的类 。 我看到clang称他们为“继续课”,gcc使用“课程延续”。
在clang或gcc中编译它:
@interface Foo : NSObject
@property int a;
@end
@interface Foo()
@property float a;
@end
......你会得到有趣名字的错误。
要回答你的其余问题:
- 这样的事情的范围,生命周期和使用情况是什么?
扩展用于声明类的私有接口。 您还可以使用它来重新声明(细化)公共属性声明。
- 这是ARC特有的“功能”吗?
没有。
- 是否有特定的运行时或其他使用要求?
类扩展是编译时的概念,不需要特殊的运行时。 当然,他们确实需要一个支持它们的编译器(clang和gcc在当前版本中都有)。
- 这也是创建@property的合适位置吗? 为什么这个设置ivars或属性的地方比@interface文件/声明更好?
是。 因为您可能想拥有私有属性。
- 为什么人们通过使用这样的特定术语使讨论复杂化 - 这似乎不存在于任何官方文档中(我能找到)?
嗯,你知道......如果整个世界都说英语,我也会更喜欢,但是暂时我很高兴我必须在学校里学习它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.