版本依赖宏
当前系统支持的最小版本 __IPHONE_OS_VERSION_MIN_REQUIRED
当前系统支持的最大版本 __IPHONE_OS_VERSION_MAX_ALLOWED
@interface ViewA : UIView
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0
。。。
。。。
。。。
#endif
@end
@available
和版本依赖宏的功能类似,不过是一个编译指令,在运行时失效,用来判断当前运行的版本环境
if (@available(iOS 9.0,*))
{
//iOS 9.0版本及以上系统环境执行此代码块
.....
}
DEBUG 和 __DEBUG
用来判断是Release还是Debug运行模式。DEBUG定义为1或者TRUE
#if DEBUG
NSLog(Debug模式)
#endi
API版本宏 API_AVAILABLE
指定API在最小系统版本中可用
// 在 iOS 10.0版本及以后可用
API_AVAILABLE(ios(10.0)) @interface StepSlider : UIControl
@end
// 在 iOS 14.0版本及以后可用
- (instancetype)initWithFrame:(CGRect)frame primaryAction:(nullable UIAction *)primaryAction API_AVAILABLE(ios(14.0));
API降级宏 API_DEPRECATED
指定API在相应版本后不推荐使用
// 9.0之后,不推荐使用UIAlertView,应使用UIAlertController替换
UIKIT_EXTERN API_DEPRECATED(UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead, ios(2.0, 9.0)) API_UNAVAILABLE(tvos)
@interface UIAlertView : UIView
@end
API不可用宏 API_UNAVAILABLE / OBJC_UNAVAILABLE / NS_UNAVAILABLE
// tvos ,watchos平台不可用
@property (nonatomic, readwrite, nullable, copy) NSString *testabcd API_UNAVAILABLE(tvos, watchos);
// 方法被删除,不再使用
-(void)funcA API_UNAVAILABLE(unavailable since now)
// 方法不可用
-(void)funcB NS_UNAVAILABLE;
C/C++ extern 宏 __BEGIN_DECLS
一般在头文件中使用,用来适配.c
和.cpp
的不同语法(也就是c/c++的语法差异)
__BEGIN_DECLS
CGSize getStatusBaSize(void);
__END_DECLS
区分模拟器和真机宏 TARGET_IPHONE_SIMULATOR
- TARGET_IPHONE_SIMULATOR —- iPhone模拟器 类似的还有
TARGET_OS_IPHONE
,TARGET_OS_IOS
等等