1

私は問題なくiOS5を搭載したiPadでUIActionSheetを提示していました。今、私のiPadにiOS 6がインストールされていると、同じことをするとアプリがクラッシュします。コードが変更されておらず、スタックトレースが理解しにくいため、問題を修正する方法がわかりません。誰かが同じ問題に遭遇しましたか?

私の初期化コードUIActionSheet

UIActionSheet *menu = [[[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"ExportMethod", @"") delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", @"") destructiveButtonTitle:nil otherButtonTitles:NSLocalizedString(@"ExportMethodMail", @""), NSLocalizedString(@"ExportMethodiTunes", @""), nil] autorelease];
self.actionSheet = menu;

提示するにはUIActionSheet

[self.actionSheet showFromBarButtonItem:self.navigationItem.rightBarButtonItem animated:YES];

私は他の可能な呼び出しも試しました:

[self.actionSheet showInView:self.view];
[self.actionSheet showFromTabBar:self.tabBarController.tabBar];
[self.actionSheet showFromRect:self.view.bounds inView:self.view animated:YES];

ただし、アプリは常に次のメッセージとともにこの行でクラッシュしています。

Thread 6: EXC_BAD_ACCESS (code = 1, adress = 0xcc)

デバッガーなしでアプリを実行すると、次のスタックトレースがあります。

 Thread 5 Crashed:
 0   libicucore.A.dylib             0x39620570 ucol_getVersion + 0
 1   TextInput                      0x36aed21a   KB::WordTrie::dictionary_versions_ok(KB::ReadOnlyDataFile const*) const + 62
 2   TextInput                      0x36aecfa4 KB::WordTrie::load(KB::String const&) + 276
 3   TextInput                      0x36ae6490 <redacted> + 12
 4   TextInput                      0x36e50cae <redacted> + 54
 5   TextInput                      0x36e50c4c <redacted> + 40
 6   TextInput                      0x36addf68 TIInputManager::load_dictionaries(KB::String const&, KB::String const&, bool) + 20
 7   TextInput                      0x36aeefbc <redacted> + 216
 8   TextInput                      0x36aeec02 <redacted> + 498
 9   UIKit                          0x356ccf7a <redacted> + 158
 10  UIKit                          0x356cbfce <redacted> + 398
 11  UIKit                          0x356cbbe2 <redacted> + 374
 12  UIKit                          0x356ca4b4 <redacted> + 460
 13  UIKit                          0x356ca1a6 <redacted> + 146
 14  UIKit                          0x3593001c <redacted> + 264
 15  UIKit                          0x3593045c <redacted> + 568
 16  UIKit                          0x3593468c <redacted> + 564
 17  UIKit                          0x35934a94 <redacted> + 136
 18  UIKit                          0x35934e5e <redacted> + 250
 19  EasyTag                        0x0002365e -[GameDetailController exportGameAsCSV] (GameDetailController.m:598)

exportGameAsCSVメソッドは、が提示される場所ですUIActionSheet

4

1 に答える 1

6

ご回答ありがとうございます。問題は、私がUIスレッドにいないことです。Appleのドキュメントによると:

Important The UIKit classes are generally not thread safe. All drawing-related operations should be performed on your application’s main thread.

次のコードで問題が修正されます。

dispatch_async(dispatch_get_main_queue(), ^{

    [self.actionSheet showFromBarButtonItem:self.navigationItem.rightBarButtonItem animated:YES];

 });
于 2012-10-08T09:03:40.460 に答える