#if для обнаружения устройства в iPhone SDK - PullRequest
0 голосов
/ 08 марта 2012

Мне интересно, почему этот код не будет работать:

#if UI_USER_INTERFACE_IDIOM//() == UIUserInterfaceIdiomPad
@implementation UINavigationBar (Custom height)

- (CGSize)sizeThatFits:(CGSize)size {
    CGSize newSize = CGSizeMake(self.frame.size.width,44+BreadCrumbBarHeight-1);
    return newSize;
}    

@end
#endif

Есть идеи?

1 Ответ

4 голосов
/ 08 марта 2012

UI_USER_INTERFACE_IDIOM () - это макрос, разработанный (и определенный) для оценки во время выполнения! Использование его для оценки во время компиляции не удастся.

Он определяется как:

#define UI_USER_INTERFACE_IDIOM() ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)

вызов [UIDevice .. НЕ УСТАНОВИТСЯ при оценке во время компиляции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...