0

我刚刚使用 IB 在我的 iPad 应用程序中添加了一个 UIDatePicker,将其链接到代码中的插座,将其保存在 IB 中,在代码中将 UIPickerViewDelegate 添加到我的 UIViewController,并在代码中添加了 UIDatePicker 插座。当我构建并运行时,应用程序会启动,但是当我尝试打开包含日期选择器的弹出视图时会间歇性地崩溃。我断断续续地说,因为弹出窗口视图偶尔会成功打开,但不会超过一次(如果第一次没有崩溃,它总是在您第二次打开弹出窗口时崩溃)。另外,在控制台中,我收到以下消息

objc[594]: FREED(id): message lastClickRow sent to freed object=0x6015a70
  1. 为什么会发生这种情况,我该如何解决?
  2. 该控制台消息表示什么?

值得一提的是,弹出视图还包含一个表格视图以及日期选择器控件。

非常感谢您的帮助!

4

3 回答 3

1

我也很难解决这个问题,但最终解决了。不要在界面生成器中添加 UIDatePicker,而是动态地或以编程方式添加它。它肯定对我有用,并希望它也对你有用。UIDatePicker *_datePicker=[[UIDatePicker alloc] initWithFrame:frame]; [self.view addSubview:_datePicker];

于 2010-07-24T07:11:46.920 回答
0

这几乎可以肯定是一个引用计数问题。您的视图控制器(我假设它是您的委托UIDatePicker,因为这是您实现协议的地方)将在正常操作期间被释放,这似乎很奇怪,但这是您应该查看的第一件事 - 委托已设置并且在显示弹出视图时仍然是有效对象。

于 2010-05-19T20:09:01.920 回答
0

您可以做的一件有趣的事情是在将 [presentPopover...] 消息传递给它之后释放它的 UIPopOverController 引用,就像我们将 presentModalViewController 消息传递给 UIViewController 一样。我也遇到过这个问题,你可以做的一件事就是

self.funnyPopoverController = aPopoverController;

(当然,funnyPopoverController 在这里保留类型属性)。

否则,如果不长时间盯着代码看,很难预测会发生什么:)

于 2010-05-31T23:49:11.877 回答