因此,在将以下代码段添加到我的源代码后,应用程序拒绝运行并给我一个SIGABRT错误:
CIALBrowserViewController.h
UIBarButtonItem *homeButtonItem;
CIALBrowserViewController.m
@interface CIALBrowserViewController ()
- (void)goHome:(id)sender;
...
homeButtonItem = [[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"home.png"]
style:UIBarButtonItemStylePlain
target:self
action:@selector(goHome:)] autorelease];
...
- (void)goHome:(id)sender {
NSURL *url = [NSURL URLWithString:@"http://google.ca/"];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
}
SIGABRT错误
2012-06-17 14:15:15.130 CIALBrowser[1753:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(0x354fa88f 0x378a1259 0x3544f1d7 0x5f8b 0x32f67c17 0x2a67 0x32f66cab 0x32f607dd 0x32f2eac3 0x32f2e567 0x32f2df3b 0x370ed22b 0x354ce523 0x354ce4c5 0x354cd313 0x354504a5 0x3545036d 0x32f5f86b 0x32f5ccd5 0x28df 0x2878)
terminate called throwing an exception(lldb)
下载CIALBrowserViewController.m的完整源代码:http://pastebin.com/uuUgi7Dc
答案 0 :(得分:0)
SIGABRT错误表明代码中的某处使用方法insertObject:atIndex:
并使用nil
作为第一个参数,这是不允许的,抛出错误。我在粘贴bin上找到了你的代码并且没有看到那个调用的方法,所以错误可能在另一个文件中。
希望这有帮助!
答案 1 :(得分:0)
在else
的{{1}}部分中,没有if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
已分配或未分配,因此homeButtonItem
为零。然后homeButtonItem
将崩溃,因为您正在向数组添加一个nil对象。