gpt4 book ai didi

iphone - 创建一个对象作为委托(delegate) - Objective C

转载 作者:搜寻专家 更新时间:2023-10-30 20:13:07 25 4
gpt4 key购买 nike

我的问题实际上很简单,我如何创建一个对象来充当委托(delegate),而不是在我的 View 中包含委托(delegate)方法?

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

什么是最好的方法?

最佳答案

for example, NSXMLParser delegate methods - they exist, the delegate is defined, but I dont want to call them as self in my view controller... what other option do I have?

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

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

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

MyXMLParserDelegate * myDelegate = [[MyXMLParserDelegate alloc] init];
[someXMLParser setDelegate:myDelegate];

但是请记住,不会保留委托(delegate),因此为了在不泄漏内存的情况下执行此操作,您应该将类​​型为 MyXMLParserDelegate 的 ivar 添加到您的 viewController 类中,然后执行以下操作:

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

关于iphone - 创建一个对象作为委托(delegate) - Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2117959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com