编程技术记录

世界你好!

版本依赖宏

当前系统支持的最小版本 __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等等

© Beli. All Rights Reserved.