我的应用程序有一个导航控制器和两个视图,firstController和secondController。 firstController有一个webView,它显示一个带链接的html页面,点击任何链接都会将用户带到secondController。这是程序停止通过调试器停止的地方。
见下面的代码。
- (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链接点击并且应用程序崩溃了)
因未捕获而终止应用 例外 'NSInvalidArgumentException',原因: '*** - [NSCFSet长度]:无法识别 选择器发送到实例0x251f100'
这太奇怪了。我已经尝试了一切,但仍然无法弄清楚出了什么问题。
答案 0 :(得分:2)
你有一个内存问题,其中一些对象被发送长度消息,但该对象早已消失并且它的内存被NSCFSet对象占用。有错误的解释。现在是bug。
您可能希望尽快释放nextController,但等待一会儿;使用autorelease使nextController至少保持活着,直到你的应用程序返回某个空闲模式。所以:
secondController *nextController = [[[secondController alloc] init] autorelease];
否则,深入研究secondController的内部工作原理。
答案 1 :(得分:0)
如果您想知道您的套件有多少元素
,请使用NSSet count