Iphone 创建用作委托的对象-目标C

Iphone 创建用作委托的对象-目标C,iphone,objective-c,delegates,Iphone,Objective C,Delegates,我的问题很简单,实际上,如何创建一个对象作为委托,而不是在视图中包含委托方法 例如,我有一个需要委托方法的x功能,它们当前设置为使用self作为委托。我希望将这些方法放在它们自己的对象中,以便在视图结束时可以调用委托方法并执行一些操作 最好的方法是什么?看看这个答案,我认为它涵盖了你需要的: 例如,NSXMLParser委托方法-它们存在,委托已定义,但我不想在我的视图控制器中将它们称为self。。。我还有别的选择吗 如果愿意,可以指定另一个自定义类来处理委托方法。只需创建一个类,称它为MyXM

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

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


最好的方法是什么?

看看这个答案,我认为它涵盖了你需要的:


例如,NSXMLParser委托方法-它们存在,委托已定义,但我不想在我的视图控制器中将它们称为self。。。我还有别的选择吗

如果愿意,可以指定另一个自定义类来处理委托方法。只需创建一个类,称它为
MyXMLParserDelegate
或类似的东西。然后,您所要做的就是告诉
NSXMLParser
对象它应该使用类的实例作为其委托

如果您使用的是Interface Builder,请向XIB文件中添加一个新对象,将其类设置为
MyXMLParserDelegate
,然后将连接从
NSXMLParser
对象的
delegate
选择器拖动到新对象

如果以编程方式执行,则基本操作如下所示:

MyXMLParserDelegate * myDelegate = [[MyXMLParserDelegate alloc] init];
[someXMLParser setDelegate:myDelegate];
但是,请记住,委托不会被保留,因此为了在不泄漏内存的情况下执行此操作,您应该向viewController类添加类型为
MyXMLParserDelegate
的ivar,然后执行以下操作:

// 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];

这不是在解释如何创建委托吗?委托方法等已经作为我正在创建的自定义类对象的一部分创建。我只是不想在我的视图控制器中放置所需的委托方法。例如,NSXMLParser委托方法-它们存在,委托已定义,但我不想在我的视图控制器中将它们称为self。。。我还有什么其他选择吗?嗨,谢谢-这确实有效,这也是我正在做的,所以这很好。