在Swift和Objective c混合项目中(链接https://github.com/shohagHub/Constants),我有一个Objective C文件Constants.h
我在哪里声明宏#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
当我从方法返回此宏
-(BOOL)isIphone{
return IS_IPHONE;
}
发生以下构建错误 “ 函数'UI_USER_INTERFACE_IDIOM'的隐式声明在C99中无效”
如何清除此错误。
答案 0 :(得分:2)
请添加到您的Constants.h
#import <UIKit/UIKit.h>
它会工作
答案 1 :(得分:1)
您的文件导入UIKit吗?不,不是。您的 Constants.h 文件将导入Foundation,而不是UIKit。而是导入UIKit,您的代码将编译。
还要注意:UI_USER_INTERFACE_IDIOM
上的文档明确指出:
如果您的应用程序在iOS 3.2和更高版本中运行,请改用userInterfaceIdiom。
因此,这是对整个 Constants.h 文件的更好的重写:
#import <UIKit/UIKit.h>
@interface Constants : NSObject
#define IS_IPHONE ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
-(BOOL)isIphone;
@end