0

我有三个不同的类,其中一个是从某个网站解析 xml,另外两个将从运行 NSXMLParserDelegate 协议方法的类中接收信息。我的问题是,我如何告诉班级从另一个班级运行协议方法?或者运行每个实例方法或整个类或类似的东西。

有什么建议么?

编辑:当某些特定视图处于活动状态时,我将解析来自网站的 xml 信息。为此,我将创建一个要向其发送消息的类,并告诉它从 xml 解析器协议运行其方法并将其接收到的值发送到存在的视图。

4

1 回答 1

2

有两种查看方式。

具有指向委托 (B) 的指针的对象 (A)(委托是实现协议方法的对象)可以通过调用协议的方法来调用它们。从委托 (B) 的角度来看,您不调用协议的方法,而是实现它们,而其他对象 (A) 将在需要通知您某些事件或请求某些信息时调用它们。这就是协议的设计目的。

对象(A)在某处声明了委托

id <someKindOfDelegate> delegate;

并且无论何时,它都会调用协议的方法

if (self.delegate)
    [self.delegate someMethod]

(B) 必须声明自己是协议的实现者

@interface ObjectB <someKindOfDelegate>

然后 (B) 将自己设置为 (A) 的一个实例的委托

ObjectA *object = [[ObjectA alloc] init];
object.delegate = self;

最后(B)实现协议的方法

- (void)someMethod {
     // do something... I've been called!
}
于 2014-02-07T16:21:50.147 回答