&引用;“未找到符号”;iPhone/iPad通用应用程序中UIPopoverController出错

&引用;“未找到符号”;iPhone/iPad通用应用程序中UIPopoverController出错,iphone,ipad,uipopovercontroller,Iphone,Ipad,Uipopovercontroller,在我的一个通用二进制iPhone/iPad应用程序中,用户可以在一个视图控制器中调整偏好,该视图控制器以模式显示。 在iPhone上,设置面板上显示presentModalViewController:animated:,在iPad上,我使用UIPopoverController 我花了很长时间将UIPopoverController代码与iPhone代码完全隔离。每次我为iPhone编译时,都会出现以下错误: dyld: Symbol not found: _OBJC_CLASS_$_UIPo

在我的一个通用二进制iPhone/iPad应用程序中,用户可以在一个视图控制器中调整偏好,该视图控制器以模式显示。 在iPhone上,设置面板上显示presentModalViewController:animated:,在iPad上,我使用UIPopoverController

我花了很长时间将UIPopoverController代码与iPhone代码完全隔离。每次我为iPhone编译时,都会出现以下错误:

dyld: Symbol not found: _OBJC_CLASS_$_UIPopoverController
  Referenced from: /var/mobile/Applications/CBB37F87-AA6D-47E2-823A-E259E3268A32/MyApp debug.app/MyApp
  Expected in: /System/Library/Frameworks/UIKit.framework/UIKit

这当然是因为iPhone上的UIKit没有UIPopoverController类。有没有人建议如何有效地将ipadapi包含从iPhone代码中分离出来,这样我就可以实际运行我的代码了?

ahhh nevermind。查看苹果的示例应用程序“TopPaid”

这有点老套,但很管用。希望有一个更优雅的解决方案

Class cls = NSClassFromString(@"UIPopoverController");
if (cls != nil)
{
    UIPopoverController *aPopoverController =
        [[cls alloc] initWithContentViewController:self.masterViewController];
    self.popoverController = aPopoverController;

    [aPopoverController release];

    [popoverController presentPopoverFromBarButtonItem:barButtonItem
                              permittedArrowDirections:UIPopoverArrowDirectionUp
                                              animated:YES];
}

我也有同样的问题。当我在iPhone上运行my universal应用程序时,即使在实例化Popover之前检查“UI\u USER\u INTERFACE\u IDIOM()==UIUserInterfaceIdiomPad”,它也会崩溃。我用这个解决了它。谢谢你的回答。这实际上是目前可用的最简单的解决方案。你也可以。我也有同样的问题,这是我的帖子,解决了我的问题。注意,
不要弱链接UIKit。这是没有必要的,它可能是有害的。请看我的回答: