从另一个类运行协议方法 - Objective-C

时间:2014-02-07 15:51:49

标签: objective-c class protocols nsxmlparserdelegate

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

有什么建议吗?

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

1 个答案:

答案 0 :(得分: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!
}