我的问题其实很简单,如何创建一个对象作为委托,而不是在我的视图中包含委托方法?
例如,我有x功能需要委托方法,并且它们目前设置为使用self作为委托。我想将这些方法放在它们自己的对象中,以便在视图结束时可以调用委托方法并执行操作。
最好的方法是什么?
答案 0 :(得分:2)
例如,NSXMLParser委托方法 - 它们存在,委托被定义,但我不想在我的视图控制器中将它们称为self ...我还有其他选择吗?
如果您愿意,可以指定另一个自定义类来处理委托方法。只需创建一个类,称之为MyXMLParserDelegate
或类似的东西。然后,您所要做的就是告诉您的NSXMLParser
对象它应该使用您的类的实例作为其委托。
如果您使用的是Interface Builder,请将新对象添加到XIB文件,将其类设置为MyXMLParserDelegate
,然后将连接从NSXMLParser
对象的delegate
选择器拖到新对象。
如果以编程方式进行,基本操作如下:
MyXMLParserDelegate * myDelegate = [[MyXMLParserDelegate alloc] init];
[someXMLParser setDelegate:myDelegate];
但请记住,不保留委托,因此为了在不泄漏内存的情况下执行此操作,您应该在viewController类中添加MyXMLParserDelegate
类型的ivar,然后执行以下操作: p>
// in your @interface block:
{
...
MyXMLParserDelegate * myDelegate;
}
// in your init method:
myDelegate = [[MyXMLParserDelegate alloc] init];
// in your awakeFromNib method (or anywhere else it seems appropriate):
[someXMLParser setDelegate:myDelegate];
// in your dealloc method:
[myDelegate release];
答案 1 :(得分:1)
查看此答案,我认为它涵盖了您的需求:How to use custom delegates in Objective-C