片段添加到源代码后的SIGABRT错误

时间:2012-06-17 18:30:32

标签: iphone sigabrt

因此,在将以下代码段添加到我的源代码后,应用程序拒绝运行并给我一个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

2 个答案:

答案 0 :(得分:0)

SIGABRT错误表明代码中的某处使用方法insertObject:atIndex:并使用nil作为第一个参数,这是不允许的,抛出错误。我在粘贴bin上找到了你的代码并且没有看到那个调用的方法,所以错误可能在另一个文件中。

希望这有帮助!

答案 1 :(得分:0)

else的{​​{1}}部分中,没有if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)已分配或未分配,因此homeButtonItem为零。然后homeButtonItem将崩溃,因为您正在向数组添加一个nil对象。