データ入力に複数のモーダル シートを使用するアプリがあります。モーダル シートを開く方法は正常に機能し、今でも正常に機能しますが、廃止されており、Xcode の将来のリリースではすぐに機能しなくなるのではないかと心配しています。 ここで、アップルはモーダルシートの使い方を指摘し、
- (void)showCustomSheet: (NSWindow *)window
// User has asked to see the custom display. Display it.
{
if (!myCustomSheet)
//Check the myCustomSheet instance variable to make sure the custom sheet does not already exist.
[NSBundle loadNibNamed: @"MyCustomSheet" owner: self];
[NSApp beginSheet: myCustomSheet
modalForWindow: window
modalDelegate: self
didEndSelector: @selector(didEndSheet:returnCode:contextInfo:)
contextInfo: nil];
// Sheet is up here.
// Return processing to the event loop
}
しかし、Xcode 5.1 のリリースにより、loadNibNamed メソッドが非推奨になり、トップレベル オブジェクトを参照する同様の関数を使用する必要があることが明らかになりました。
私が抱えている問題は、これを変更することです:
[NSBundle loadNibNamed:@"OrderDetailsWindow" owner:self];
これに。
NSArray *array;
[[NSBundle mainBundle]loadNibNamed:@"OrderDetailsWindow" owner:self topLevelObjects:&array];
このメソッド呼び出しは、実際にはモーダル シートを開きます。ただし、モーダル シートを開くメソッドの最後で、Xcode がこのエラーでハングアップします。
0x7fff8c33b097: andl 24(%r11), %r10d Thread1: EXC_BAD_ACCESS (code:EXC_I386_GPFLT)
これが何を言っているのかわかりません。デバッグ領域に情報はありません。これは、topLevelObjects 配列が適切に解放されていないことに関係しているのでしょうか? この作業をもう少しスムーズにする方法について何か考えはありますか? Apple の時代遅れのライブラリに頭がおかしくなりそうです!