gpt4 book ai didi

iphone - 奇怪的 Objective-C 问题

转载 作者:行者123 更新时间:2023-12-03 21:11:10 25 4
gpt4 key购买 nike

我的应用程序有一个导航 Controller 和两个 View ,firstController 和 secondaryController。firstController 有一个 webView,显示带有链接的 html 页面,单击任何链接都会将用户带到 secondaryController。这是程序通过调试器单步停止的地方。

请参阅下面的代码。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

if (navigationType == UIWebViewNavigationTypeLinkClicked) {
secondController *nextController = [[secondController alloc] init];

[self.navigationController pushViewController:nextController animated:YES];
[nextController release];

return NO;
}
return YES;
}

这工作正常,除了当我第三次单击firstController上的任何链接从firstController导航到secondController时,应用程序只是退出。(firstController链接单击,secondController后退按钮,firstController链接单击,secondController后退按钮,firstController链接单击并且应用程序崩溃)

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFSet length]: unrecognized selector sent to instance 0x251f100'

这太奇怪了。我已经尝试了一切,但仍然无法弄清楚出了什么问题。

最佳答案

您遇到了内存问题,其中某个对象被发送了长度消息,但该对象早已消失并且其内存被 NSCFSet 对象占用。有错误的解释。现在来说说 bug。

你可能想尝试不要那么快地释放nextController,而是再等一会儿;使用 autorelease 以便 nextController 至少在您的应用程序返回到某种空闲模式之前保持事件状态。所以:

secondController *nextController = [[[secondController alloc] init] autorelease];

否则,请深入研究 secondaryController 的内部工作原理。

关于iphone - 奇怪的 Objective-C 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3256078/

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