0

对于我当前的项目,我有一些协议,并在实现该协议的类上声明了一个类别:

@interface MyClass (ImplementingMyProtocol) <MyProtocol>

@end


@implementation

// Implementation of protocol

@end

我认为如何解释这个方案有两种可能性:

  1. 该类别仅适用于MyClass符合 的子类MyProtocol
  2. 类别适用于具有按类别MyClass实施效果的所有实例。MyProtocol

这两种可能性中的哪一种实际上适用?我不知道编译器如何解释这个声明,也没有找到关于该主题的任何帮助或文档。我想我知道如何处理这两个选项,但是要这样做,我需要知道编译器解释我的代码的方式实际上是哪一个。

4

1 回答 1

1

上面的效果是,xcode 知道 Class MyClass DOES 打算实现给定的协议 MyProtocol 它也将在运行时符合它


协议只是“元信息”——它不是运行时需要的......运行时只知道嘿我有这个类,嘿我应该在它上面调用这个方法

它不检查是否符合某些协议


协议仅用于IDE 的类型检查(它可以给你警告),你可以在运行时询问一个类,但 objC 没有


所以他们根本不需要执行:D

于 2012-12-18T14:11:55.133 回答