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