gpt4 book ai didi

iphone - 如何在iPhone中创建全局协议(protocol)方法?

转载 作者:行者123 更新时间:2023-12-03 20:51:51 26 4
gpt4 key购买 nike

我创建一个协议(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 基类,MachineAMachineB 均从该基类派生;协议(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com