我有三个不同的类,其中一个是从某个网站解析xml,另外两个将从运行NSXMLParserDelegate协议方法的类中接收信息。我的问题是,我如何告诉班级从另一个班级运行协议方法?或者运行每个实例方法或整个类或类似的东西。
有什么建议吗?
编辑:当某些特定视图处于活动状态时,我将从网站解析xml信息。要做到这一点,我将有一个我要发送消息的类,并告诉它从xml解析器协议运行其方法,并将它收到的值发送到存在的视图。
答案 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!
}