gpt4 book ai didi

ios - 发送到解除分配实例的 iPhone 消息

转载 作者:行者123 更新时间:2023-11-29 10:44:44 24 4
gpt4 key购买 nike

我有一个奇怪的问题导致崩溃,当我的 UITableviewContrller 出现时我快速触摸文本字段。 它并不总是发生。大概 10 次测试中有 2 次崩溃。 以前用的很好,现在不知道为什么有时会崩溃。

iOS7.1 上的 iPhone4。 崩溃消息。它在 OrderTableViewController 中崩溃。在崩溃之前,我检查了 retainCount 是否为 1,所以我不知道这是怎么发生的。我不知道为什么它被释放。

2014-04-01 09:35:57.628 [17027:60b] *** -[OrderTableViewController respondsToSelector:]: message sent to deallocated instance 0x17fef520

这是我推送 viewController 的代码。 我相信这是正确的。我一直在用它。

OrderTableViewController *orderViewController = [[OrderTableViewController alloc] initWithNibName:@"OrderTableViewController" bundle:nil];
orderViewController.hidesBottomBarWhenPushed = YES;

[self pushViewController:orderViewController animated:YES];
[orderViewController release];

我没有将文本字段声明为保留。我不确定这是否是问题所在。 UITextField *uname; UITextField *utel;

uname = [[UITextField alloc] initWithFrame:CGRectMake(180, 8, 120, 30)];
uname.BorderStyle=UITextBorderStyleRoundedRect;
uname.keyboardType=UIKeyboardTypeNamePhonePad;
uname.delegate=self;


utel = [[UITextField alloc] initWithFrame:CGRectMake(180-40, 8, 120+40, 30)];
utel.BorderStyle=UITextBorderStyleRoundedRect;
utel.delegate=self;
utel.keyboardType=UIKeyboardTypeNumberPad;

- (void)dealloc {
[uname release];uname=nil;
[utel release];utel =nil;
[super dealloc];
}

我尝试使用僵尸模板按​​仪器进行配置文件,但找不到有用的东西。 这里有问题。 1.对这个问题有什么想法吗? 2. 如何解决此类问题。我尝试删除 [orderViewController release] 的代码;而 retainCount 变为 2,似乎可以进行 20 次测试。但是,它会导致内存泄漏。如何减少这种泄漏问题。当我不需要它时,我可以在导航 Controller 中释放它吗?我知道它更复杂,但我不知道更好的解决方法。 Form message of crash ,好像跟OrderViewController over-release有关,但是我找不到问题所在。是否有其他问题导致错误消息? 感谢您的帮助。

最佳答案

  • 不要使用 retainCount。例如,它永远不会返回 0。

  • 问题是您的委托(delegate)在 View Controller 处理完它之前就被释放了。您可以通过在 dealloc 中将委托(delegate)设置为 nil 来解决这个问题,但这可能不正确,因为它表明您的 View Controller 也会比它委托(delegate)行为决定的东西活得更久。

  • 你的dealloc方法是错误的;在非 ARC 中,你必须调用 [super dealloc];

  • 你应该使用 ARC

关于ios - 发送到解除分配实例的 iPhone 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775535/

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