UI_USER_INTERFACE_IDIOM () - это макрос, разработанный (и определенный) для оценки во время выполнения!
Использование его для оценки во время компиляции не удастся.
Он определяется как:
#define UI_USER_INTERFACE_IDIOM() ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone)
вызов [UIDevice .. НЕ УСТАНОВИТСЯ при оценке во время компиляции