ios – 如何在方法声明中使用预处理器宏?

我经常在
Xcode 6和7之间转换,并想要一种方法来避免像这样的构建警告.

Conflicting return type in implementation of
‘supportedInterfaceOrientations’: ‘UIInterfaceOrientationMask’ (aka
‘enum UIInterfaceOrientationMask’) vs ‘NSUInteger’ (aka ‘unsigned
long’)

我似乎无法使用同时满足两个版本的Xcode的类型.所以我打算实现一个预处理器宏,它具有不同的值,具体取决于__IPHONE_9_0的值.

#ifdef __IPHONE_9_0
#define CompatibilityUserInterfaceMask  UIInterfaceOrientationMask
#else
#define CompatibilityUserInterfaceMask  NSUInteger
#endif

当我尝试实现这个,虽然我得到一个构建错误.

- (CompatibilityUserInterfaceMask)supportedInterfaceOrientations { ... }

这是可能的,还是有人有其他想法来实现相同的结果?

最佳答案 至于我可以告诉你的宏应该工作,但如果你想要一个稍微不同的方法(可以说是丑陋的):

#if __IPHONE_OS_VERSION_MAX_ALLOWED < 90000  
- (NSUInteger)supportedInterfaceOrientations  
#else  
- (UIInterfaceOrientationMask)supportedInterfaceOrientations  
#endif  
点赞