如果我使用额外方法定义NSObject
协议的子协议,然后定义并实现一个声明与该协议一致的NSObject
类别,我会在编译时收到警告。编译器抱怨我的NSObject
类别没有实现在NSObject
协议中声明的所有方法。NSObject实现协议上的类别导致未实现方法警告
我不明白为什么会出现这种情况。该NSObject
类(在<Foundation/NSObject.h>
宣布,它符合NSObject
协议(以及冗余,它实现了这些方法) - ?不应该是足够
有什么问题的原因在这里
示例代码? - 如果你编译这个,你会看到在NSObject (CategoryToImplementMyProtocol)
实施警告:
@protocol MyProtocol <NSObject>
- (void)myMethod;
@end
@interface NSObject (CategoryToImplementMyProtocol) <MyProtocol>
@end
@implementation NSObject (CategoryToImplementMyProtocol)
- (void)myMethod
{
NSLog("A la peanut butter sandwiches!");
}
@end
我发现一对夫妇的解决这一问题,但所有的答案都的“做到这一点的解决办法!”品种,而不是“这是问题的原因“多种(或者只是尽管被接受...)。我知道我可以解决这个问题。我真的很想知道为什么它失败。
对不起!转录代码时是错误的(如果它是任何安慰,我在看到你的答案之前编辑了问题 - 尽管我认为它仍然有意义,不是吗?因为'MyProtocol'是'NSObject'的子协议。 –
:)但我认为这种情况(我甚至没有意识到会发生)稍微比我回答的更令人困惑。由于在继承“”的类上实现这样的类别时没有这样的问题,但不要自己采用它。 –
是的,我仍然没有完全看到问题 - 为什么仅仅添加我的类的主要'NSObject'类已经声明符合'NSObject'协议? –