0

したがって、次のスニペットをソース コードに追加すると、アプリケーションは実行を拒否し、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

4

2 に答える 2

0

elseのセクションでは、 alloced または initedif (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)はなく、 nil もありません。nil オブジェクトを配列に追加しているため、クラッシュします。homeButtonItemhomeButtonItem[buttons addObject:homeButtonItem];

于 2012-06-18T03:08:36.270 に答える
0

SIGABRT エラーは、コードのどこかでメソッドinsertObject:atIndex:を使用nilし、最初のパラメーターとして使用することを示唆していますが、これは許可されておらず、エラーをスローしています。貼り付けビンのコードに移動しましたが、そこで呼び出されたメソッドが表示されなかったため、エラーは別のファイルにある可能性があります。

お役に立てれば!

于 2012-06-17T18:37:16.730 に答える