2012-12-18 35 views
0

对于我目前的项目,我有一些协议,我宣布在实施这项协议的类类别:类别对实现协议的类有什么影响?

@interface MyClass (ImplementingMyProtocol) <MyProtocol> 

@end 


@implementation 

// Implementation of protocol 

@end 

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

  1. 的类别仅适用于符合MyProtocolMyClass子类。
  2. 该分类适用于MyClass的所有实例,并按类别实施MyProtocol

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

回答

1

的效果以上将是,它是由公知的xcode的那类MyClass的是否打算实现给定协议MyProtocol 它也将符合它在运行时


的协议是唯一的“元信息” - 没有什么运行时需要..运行时只知道嘿,我有这个类哎我应该怎么称呼它这种方法

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


协议只有在那里类型由IDE检查(这可以给你警告),你可以在运行时问一类,但objC犯规


所以他们arent执行所需的所有 :D

+0

但是“conformsToProtocol”-Method呢?这不是运行时知道的一些协议相关信息吗?我可以看到你的观点,即使用Objective CI可以将任何类型的消息发送给任何对象并希望得到答复,但我认为可以在运行时使用协议(使用上述方法)对对象执行一些额外的检查,无论是是否它可以给我一个错误发送一些消息给一个对象... –

+0

是的....“你可以问一个类在运行时,但objC doesnt” - 运行时无关 –

+0

检查将是YES给出的例子 –