我创建一个协议(protocol)方法,并且我想在多个类中实现该协议(protocol)方法
@protocol XMLProtocol <NSObject>
- (BOOL) hasAllRequiredAttributes :(NSDictionary*)attributeMap;
@end
我使用了以下类方法
#import "XMLProtocol.h"
@interface MachineA : NSObject<XMLProtocol>
及其实现方法我将实现协议(protocol)方法
- (BOOL) hasAllRequiredAttributes:(NSDictionary *)attributeMap {
return false;
}
我还在另一个类中使用了这个协议(protocol)方法
#import "XMLProtocol.h"
@interface MachineB : NSObject<XMLProtocol>
及其实现方法我将实现协议(protocol)方法
- (BOOL) hasAllRequiredAttributes:(NSDictionary *)attributeMap {
return false;
}
我的想法是我应该在哪里调用协议(protocol)方法。我完全糊涂了。我怎样才能做到这一点。
最佳答案
为协议(protocol)方法定义全局实现的一种方法(如果我理解正确的话)是在 NSObject 上定义一个类别:
@implementation NSObject (XMLProtocol)
- (BOOL) hasAllRequiredAttributes:(NSDictionary *)attributeMap {
return false;
}
通过这样做,每个对象都会有该方法。不知道这是否明智,但这是一种方法。
另一种方法是定义一个 Machine
基类,MachineA
和 MachineB
均从该基类派生;协议(protocol)方法将在基类中定义:
@interface Machine : NSObject <XMLProtocol>
...
@implementation Machine
- (BOOL) hasAllRequiredAttributes:(NSDictionary *)attributeMap {
return false;
}
....
@end
@interface MachineA : Machine
...
如果需要,任何派生类都可以重新定义它。
这不像 NSObject 类别那样“全局”,但如果您可以为所有需要实现该协议(protocol)的类定义一个基类,它可能是一个更好的解决方案。
关于iphone - 如何在iPhone中创建全局协议(protocol)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13008284/