【发布时间】:2014-05-11 14:47:16
【问题描述】:
当我的 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 次测试似乎还可以。但是,它会导致内存泄漏。如何减少这种泄漏问题。当我不需要它时,我可以在导航控制器中释放它吗?我知道这更复杂,但我不知道更好的解决方法。 表单消息 crash ,似乎与 OrderViewController 过度释放有关,但我找不到问题所在。是否有其他问题导致错误消息? 感谢您的帮助。
【问题讨论】:
-
只是为了验证,你没有使用arc,对吗?
-
不,我没有使用 arc。
-
我可以询问您为什么不使用 ARC 吗???你知道提交到应用商店的应用必须使用 ARC???
-
@Popeye 应用商店不在乎你是否使用 ARC。 (虽然我同意,但几乎每个人都应该使用它)
-
@jrturton 是的,你是完全正确的
标签: ios objective-c memory-management