【发布时间】:2012-09-13 04:51:26
【问题描述】:
我正在开发一个 iPad 应用程序,其中有一个表格视图。当用户选择表格中的一行时,我使用didSelectRowAtIndexPath 打开一个弹出框。当我尝试使用某个按钮时,我收到一条错误消息,说“消息已发送到已释放的实例”。我最初虽然错误是由弹出框抛出的(在它的viewDidLoad 或其他东西中),所以我在其中设置了一个断点并单步执行代码。令我惊讶的是,我能够在我的表格视图上一直加载弹出框和didSelectRowAtIndexPath 的其余部分(实际上只涉及退出一些 if 块)。然后,当我在自动生成的代码中执行几个步骤时抛出错误,该代码没有出现在我的任何类文件中(看起来像 0x0010d71d <+1164> mov 0x6...)。
所以,我的问题是,如何找到引发此错误的位置?是否有另一种在 didSelectRowAtIndexPath 之后自动运行的方法可能会在某处搞砸?
【问题讨论】:
-
它会告诉你实例属于哪条消息和哪个类吗?
-
分配弹出框时是否使用
autorelease? -
@Phillip Mills:意思是-[CFString release]。我自己从来没有明确使用过 CFString,所以它一定来自其他东西。也许我会在谷歌上搜索一下,看看是否有任何帮助。
-
@jere:我正在使用
performSegueWithIdentifier和-(void) prepareForSegue来显示我的弹出框,控制器是我的视图控制器的@property,所以我认为这意味着它应该是自动释放的,正确的?我对使用 Mac 还是很陌生,所以很多这些东西仍然让我有点头疼。我所拥有的大部分内容都是从我在 SO 和 youtube 上找到的教程中复制而来的,但我通常不知道为什么会这样设置,而且其中一些概念对我来说仍然有点模糊。
标签: ios uitableview uipopover