创建一个对象作为委托 - 目标C

时间:2010-01-22 14:43:03

标签: iphone objective-c delegates

我的问题其实很简单,如何创建一个对象作为委托,而不是在我的视图中包含委托方法?

例如,我有x功能需要委托方法,并且它们目前设置为使用self作为委托。我想将这些方法放在它们自己的对象中,以便在视图结束时可以调用委托方法并执行操作。

最好的方法是什么?

2 个答案:

答案 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