#if TARGET_OS_IPHONE与iPhone和iPad

时间:2013-09-19 10:26:54

标签: iphone ios objective-c xcode ipad

我有一个问题,我想为iPhone和iPad添加不同的导入文件,但对于iPad不起作用,这就是我的方式:

#if TARGET_OS_IPHONE
#import "MyView_iPhone.h"
#elif TARGET_OS_IPAD
#import "MyView_iPad.h"
#endif

在代码中然后我写了例如:

MyView_iPhone *iphone = [MyView_iPhone alloc] init];

有效,但是:

MyView_iPad *iphone = [MyView_iPad alloc] init];
不能工作,给我一个错误,因为看不到MyView_iPad.h,我该怎么办?

这是错误:

未知接收器'MyView_iPad';你的意思是'MyView_iPhone'吗?

1 个答案:

答案 0 :(得分:2)

<TargetConditionals.h>实际上并未定义TARGET_OS_IPAD。你无法在编译时知道你是在为iphone还是ipad执行!这是您应该在运行时检查的内容,导入两个视图并执行以下操作:

UIView *iphone;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    iphone = [[MyView_iPad alloc] init];
}
    else{
    iphone = [[MyView_iPhone alloc] init];
}