实际上,有条件地为iPhone和iPad编码是如何工作的?

问题描述

| UIImagePicker在iPhone和iPad上的显示方式必须不同。在iPad上,它抛出一个异常:   *由于未捕获的异常而终止应用程序   \'NSinvalidargumentexception \',原因:   \'在iPad上,UIImagePickerController必须   通过UIPopoverController呈现 因此,我必须将代码添加到特定于iPad的通用应用程序中。有什么安全的方法可以使应用程序在没有UIPopoverController的设备上不会崩溃? 例:
popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
        [popover presentPopoverFromrect:CGRectMake(100,100.0,0.0,0.0) 
                                 inView:self.view
               permittedArrowDirections:UIPopoverArrowDirectionAny 
                               animated:YES];
此外,如果需要UIPopoverController,则需要一个实例变量来保存它。我该如何处理?     

解决方法

您可以通过这样做检查类是否存在。
Class popoverClass = (NSClassFromString(@\"UIPopoverController\"));
if (popoverClass != nil) {
// you\'re on ipad
} else {
// you\'re on iphone/ipod touch
}
    ,这个问题看起来像是一个重复: 为iPad编译时是否设置了特定的Xcode编译器标志?     ,您可以快速检查使用哪种设备:
[[UIDevice currentDevice] model];