gpt4 book ai didi

iphone - 使用 Interface Builder 将不同对象设置为委托(delegate)的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 17:45:00 25 4
gpt4 key购买 nike

假设我创建了一个新项目。我现在向 Interface Builder 中的 View Controller 添加两个文本字段。我想响应文本字段创建的委托(delegate)事件,但是,我不想让主视图 Controller 充当两个文本字段的委托(delegate)。理想情况下,我希望为每个充当委托(delegate)的文本字段提供一个单独的文件。这些对象中的每一个还需要能够与主视图 Controller 交互。

我的问题是如何设置它并正确链接所有内容?

我尝试创建一个继承自 NSObject 并实现 UITextFieldDelegate 的新类。然后,我添加了一个与 View Controller 类型相同的名为“viewController”的实例变量,并用 IBOutlet 对其进行了标记(这需要我添加 #import“myViewcontroller.h”)。

然后我转到 Interface Builder 并打开我的 View Controller ,其中包含两个编辑框。我向表单添加了一个 NSObject,并将其类型更改为我创建的新类。我将其 viewController 属性设置为文件的所有者,并将文本框的委托(delegate)属性之一设置为指向我创建的这个新对象。

现在,当我运行该程序时,当我触摸文本框时它会崩溃。它给出错误 EXC_BAD_ACCESS。我猜我没有在 IB 中正确链接内容。

有些事情我不确定哪些可能是问题所在:
IB 是否会自动知道通过将 NSObject 放置在 ViewController 中来创建该类的实例?即使它同时创建自己,它能否正确地将 viewController 属性分配给它自己的实例?也许问题是这个新对象没有被任何东西保留?

最佳答案

你是对的。您的委托(delegate)对象不会被保留。在 iPhone OS 上,nib 文件中的每个对象都使用保留计数 1 进行初始化,然后自动释放。如果没有任何东西再次保留该对象,它最终将被释放。

将属性添加到 View Controller 类并将其连接到委托(delegate)的实例。只要正确定义属性, View Controller 就会保留该对象,一切都会按预期工作。

关于iphone - 使用 Interface Builder 将不同对象设置为委托(delegate)的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481731/

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