【发布时间】:2011-04-28 08:45:50
【问题描述】:
我刚刚更新了我的应用程序,使其成为通用应用程序。为此,我在某个地方添加了对UIPopoverController 的支持。现在该应用似乎在 3.1.3 iPhone/iTouch 设备上崩溃了:
OS Version: iPhone OS 3.1.3 (7E18)
Report Version: 104
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x00000001, 0xe7ffdefe
Crashed Thread: 0
Dyld Error Message:
Symbol not found: _OBJC_CLASS_$_UIPopoverController
我不明白的是,如果硬件是 iPad,我只会尝试调用 UIPopoverController:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:btc];
CGSize popoverSize = { 300.0, 500.0 };
popover.delegate = self;
popover.popoverContentSize = popoverSize;
self.bmPopover = popover;
[popover release];
[self.bmPopover presentPopoverFromBarButtonItem:self.bmBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
} else {
[self presentModalViewController:nav animated:YES];
}
我确实声明了一个 iVar 和一个 UIPopoverController 类型的属性,但如果我实际上没有尝试调用类中的方法,我不会想到这会在运行时引起问题。
如果不支持,我应该怎么做才能确保系统在运行时不会尝试与 UIPopoverController 链接?
【问题讨论】:
-
崩溃日志的其余部分(您省略了)包含调用堆栈。它会准确地告诉您
UIPopoverController的使用位置。检查调用堆栈或发布它,我们可以提供帮助。 -
没有堆栈跟踪,因为应用程序在尝试链接时死了,所以它甚至永远不会运行。弱链接似乎可以解决问题。
标签: iphone cocoa-touch xcode ipad ios