1

我一直在查看 Apple 提供的示例代码,偶然发现了一些我没有了解的有趣的东西。在.m文件的子类中,有多个用@implementation. 最后一个是@implementation我所期望的通常的 - 所有代码所在的类实现,但上面是几个简短的实现,每个实现都定义了一个方法。它们以这种格式声明:@implementation ClassName (Convenience). 其中定义的方法与其他方法的格式相同,但它们以 . 为前缀aapl_。当然,在每个@implementation定义之后@end,。调用这些方法的方式是创建一个实例ClassName然后调用该方法,就像使用标准 API 一样:[anInstance aapl_thisInterestingMethod:aParameter];

所以这似乎是一种在不创建类别的情况下向类添加方法的方法,您使用类的实例调用它,并且它仅特定于该文件。您可以使用self来引用调用参数。

我的问题是:

  • 还有比这更多的吗?
  • 为什么要在末尾附加(便利)?
  • 添加前缀是否aapl_只是为了表明这不是标准 API 的一部分,而是我们自己的方法?
  • 为什么这比像通常那样定义一个方法,在调用参数中接受作为常规参数更好?例如:[self anInterestingMethod:myInstance withParameter:aParameter];
  • 这些类型的方法/实现叫什么,我还应该知道什么?

编辑:这个问题与被标记为重复的问题完全没有关系... @interface is not @implementation

4

0 回答 0