iphone - 模态视图 Controller 错误。我遇到过的最奇怪的

标签 iphone objective-c cocoa-touch uitableview

我对程序中遇到的一个奇怪错误感到好笑。

我有一个带有 navigationBartableViewController。当用户单击 navigationBar 上的 ADD 按钮时,他们会看到一个模式 tableViewController。此 viewController 在其 navigationBar 上有一个 CANCEL 按钮(通过委托(delegate)关闭 viewController)

tableViewController 具有包含 UIButtonUITextFieldUITextView 的自定义单元格。

该错误是由于执行以下操作序列(而不是其他操作)引起的:

  • 我在 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/

相关文章:

iphone - 为什么没有调用controllerDidChangeContent?

用于 Ad Hoc 分发的 XCode 4 的 iPhone 权利问题

iphone - 如何确保不显示没有行的部分

ios - swift 内存泄露怎么办?

iphone - 在iphone objective-c中将联系人添加到地址簿

ios - 将现有的 Swift 1.2 代码转换为 2.0 后,Xcode 无法识别属性

objective-c - Cocoa 中与 void* 上下文相关的内存管理

iphone - Interface Builder 无法查看静态库中的类

objective-c - 网络广播的流媒体基本上是如何工作的?

ios - 在启动之间保存数据的权威方法。