我需要导入此标头
#import "NumberKeypadDecimalPoint.h"
但前提是设备是 iPhone。我怎么能这样做?
该应用程序的通用性
我试试这个,但它不起作用
#define iPad UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
#if iPad
#import "NumberKeypadDecimalPoint.h"
#end
谢谢
我需要导入此标头
#import "NumberKeypadDecimalPoint.h"
但前提是设备是 iPhone。我怎么能这样做?
该应用程序的通用性
我试试这个,但它不起作用
#define iPad UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad
#if iPad
#import "NumberKeypadDecimalPoint.h"
#end
谢谢
你不能那样做。要了解原因,您必须对通用应用程序(和 C 编译器)的工作原理有所了解。
首先,#if
等#define
是在编译阶段早期调用的预编译器宏。它们通常用于编写可跨平台编译的可移植代码。例如:
# ifdef __ANDROID__
# include <GLES/gl.h>
# include <GLES/glext.h>
# else // iOS
# include <OpenGL/OpenGL.h>
# include <OpenGL/gl.h>
# include <OpenGL/glext.h>
# endif
但是,通用应用程序就是这样 - 可在多种设备类型上运行的二进制文件。因此,在 iPhone 和 iPad 上运行的代码是由相同的编译通道生成的(这与用于在一个应用程序中支持多种 CPU 类型的通用二进制文件或胖二进制文件不同,这些应用程序实际上确实包含来自多个编译器通道的代码一个应用程序二进制文件)。
由于您的设备类型只能在运行时确定,因此您必须在运行时执行设备类型检查。