Неявное объявление функции 'UI_USER_INTERFACE_IDIOM' недопустимо в C99 - PullRequest
0 голосов
/ 24 ноября 2018

В Swift и Objective c Hybrid Project (ссылка 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 "

Как я могу удалить эту ошибку.

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

, пожалуйста, добавьте в свой Constants.h #import <UIKit/UIKit.h> это будет работать

0 голосов
/ 24 ноября 2018

Ваш файл импортирует 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...