我对程序中遇到的一个奇怪错误感到好笑。
我有一个带有 navigationBar
的 tableViewController
。当用户单击 navigationBar
上的 ADD
按钮时,他们会看到一个模式 tableViewController
。此 viewController
在其 navigationBar
上有一个 CANCEL
按钮(通过委托(delegate)关闭 viewController
)
tableViewController
具有包含 UIButton
、UITextField
和 UITextView
的自定义单元格。
该错误是由于执行以下操作序列(而不是其他操作)引起的:
- 我在
UITextView
(位于其中一个单元格中)中输入一些文本 - 在不关闭键盘的情况下,我向上滚动
tableView
。 - 我点击了取消按钮(以便模态视图 Controller 被关闭)
- 回到主
tableViewController
,我再次点击ADD
按钮,
我收到 exec_bad_access
错误。
没有其他原因导致此错误。
如果我尝试完全相同的过程,但使用 UITextField
代替,一切都很好。
此外,如果我从上述序列中排除任何列出的步骤,一切都很好。
我很困惑。会不会是一个bug?
更新
我尝试使用 NSZombie
来找出导致错误的原因。这是我在控制台中看到的:
MyApp[14402:207] *** -[UIWebDocumentView isKindOfClass:]: message sent to deallocated instance 0x200a800
我没有太多代码;单元格是在界面生成器中创建的。这是调出 modalViewController
- (void)createNewEntry:(id)sender {
CreateNewEntryViewController *createNewEntryVC = [[CreateNewEntryViewController alloc] initWithNibName:@"CreateNewEntryViewController" bundle:nil];
createNewEntryVC.delegate = self;
UINavigationController *createNewEntryNavigationController = [[UINavigationController alloc] initWithRootViewController:createNewEntryVC];
[createNewEntryVC release];
[self presentModalViewController:createNewEntryNavigationController animated:YES];
[createNewEntryNavigationController release]; }
最佳答案
最终编辑:
我找到了我的问题的解决方案,也许它也能解决你的问题。 (看我对这个问题的回答:)UIButton, created by Interface Builder, is crashing
具体来说,如果您的按钮有任何图像,请尝试从项目中删除它们,获取新副本,重命名它们,将它们重新添加到项目中,然后再次连接它们。似乎对我的情况有效。
我之前的随机性:
(不是答案,但是...)无论如何,我收到了类似的消息。也许添加我所看到的内容可能有助于解决这一切。我在模拟器和设备上都得到了这个。
-[UIImage isKindOfClass:]:发送到已释放实例 0x1661f0 的消息
此消息对我来说并不总是相同,有时它是关于保留无效实例或其他一些类似的事情。这些都不是我自己做的事情,而是幕后的事情。
编辑:这是另一个:
-[UIImage keep]:发送到已释放实例 0x3b621a0 的消息
这是我被抛弃的代码(像你一样,我正在显示一个模式对话框,尽管我的是一个自定义的 UIView)。就我而言,我强制运行循环等待用户响应,如下所示:
[modalDialog showInView:self.view
title:@"Illegal Move"
message:message
cancelText:@"Cancel"
proceedText:@"Cheat"];
while (waitingForDialogToDismiss == YES) {
//this line is where NSZombies puts me:
[[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode
beforeDate: [NSDate dateWithTimeIntervalSinceNow:1.5]];
}
这个模式对话框完全由 Nib 构建,并且有几个按钮图像并且几乎总是正确显示。但是,如果我尝试在它出现之前通过点击许多不同的 UI 元素来“催促它”,大约 30-40% 的情况下我会收到此错误。有一次,即使出现了对话框,其“取消”按钮的图形也是错误的。
看起来 View 的显示并不总是正确地完全加载所有内容,或者可能及时地加载所有内容。
目前,我将尝试重写一堆代码来删除 NSRunLoop 业务。我们拭目以待。
编辑2:没有帮助
NSRunLoop 绝对不是问题所在。我已经缩小了范围,并在这里开始了一个新问题:UIButton, created by Interface Builder, is crashing
关于iphone - 模态视图 Controller 错误。我遇到过的最奇怪的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1450333/