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

标签 iphone ios6 protocols global

我创建一个协议(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/

相关文章:

iphone - 使用 MBProgressHUD 发生内存泄漏

iphone - UIActivityIndi​​cator 无法正常工作?

iphone - iOS 6 通用应用程序中的方向问题

ios - 与导航 Controller 的协议(protocol)

iphone - 为什么这个 NSArray 不起作用?我正在尝试向其中添加对象

iphone - 如何使用 iCloud 访问 Xcode 项目

ios - 如何为 iPhone 5 切换到不同的 Storyboard?

memory - "exited abnormally with signal 9: Killed: 9"是什么意思

ios - 从另一个 ViewController 访问数组并对其进行排序

java - 传输文件的协议(protocol)