我有一个使用多个模式表进行数据输入的应用程序。打开模态表的方法运行良好,并且仍然运行良好,但它们已被弃用,我担心它们很快将不适用于 Xcode 的未来版本。 在这里,Apple 指出了如何使用模态表,
- (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 过时的库快把我逼疯了!