什么是一个Objective-C“级延续”?(What is an Objective-C “cla

2019-06-23 22:00发布

我不能完全弄清楚我所看到的被称为一个Objective-C“级的延续”。 这是/是这些...

  1. 伊瓦尔(S)在声明@implementation.m )文件?
  2. 另一名一类类? (可能性很小,ASFAIK类别不能有IVARS,周期)
  3. 另一名一类的扩展?
  4. 别的东西?

这就是说...

  1. 范围是什么,生命周期,并为这样的事情的使用情况?
  2. 这是一个特定的ARC-“功能”?
  3. 有没有具体的运行时间,或供其使用其他的要求吗?
  4. 这是一个合适的地方创建一个@property ,以及? 为什么会这样设置的ivars或性能比,也就是说,在一个更好的地方@interface文件/申报?
  5. 这似乎没有任何官方文件(我能找到)的存在 - 人们为什么要使用这种专用术语复杂化的讨论?

在问题在Objective-C是什么在头文件中定义的东西(比如一个属性),而不是.m文件之间的差异? 讨论触及了这个问题,但那种只是使问题变得更加 - 或者至少不能提供该术语的标准基准/定义......因此这个问题。

Answer 1:

延续就是苹果称之为一个类扩展 。 我已经看到了铿锵称他们为“补习班”和GCC使用“类延续”。

在铛或GCC编译如下:

@interface Foo : NSObject
@property int a;
@end

@interface Foo()
@property float a;
@end

......,你会得到与古怪名字的错误。

要回答你的问题的其余部分:

  1. 范围是什么,生命周期,并为这样的事情的使用情况?

扩展用于声明一个类专用接口。 你也可以用它来重新声明(细化)公共属性声明。

  1. 这是一个特定的ARC-“功能”?

没有。

  1. 有没有具体的运行时间,或供其使用其他的要求吗?

类扩展是一个编译时的概念,不需要特殊的运行时。 当然,他们需要支持他们(包括铛和gcc在当前版本做)的编译器。

  1. 这是一个合适的地方创建一个@property,以及? 为什么会这样设置的ivars或性能比,也就是说,在@interface文件/声明一个更好的地方吗?

是。 因为你可能希望有私人性质。

  1. 这似乎没有任何官方文件(我能找到)的存在 - 人们为什么要使用这种专用术语复杂化的讨论?

那么,你知道...我也宁愿仿佛整个世界都讲英语,但暂时我很高兴的是,我必须了解它在学校。



文章来源: What is an Objective-C “class continuation”?