Xcode API标记状态(废弃,可用等状态)

在我们开发过程中,总是会有代码的不断迭代,有些API会随着版本的迭代逐渐的被放弃使用,甚至被废弃。为了在我们在使用的过程中了解到这些状态,就需要标记API的状态,引导我们选择更加合适的API。尤其是SDK的开发过程中这一点变得尤为重要。下面就介绍一系列的API状态的用法。

NS_AVAILABEL_IOS(iOS版本号)

1
- (void)available NS_AVAILABLE_IOS(5_0);

表示此APIiOS某个版本之后才能使用,iOS版本号的写法可以写成14.0或者14_0

NS_AVAILABLE(macos版本号,ios版本号)

1
- (void)available NS_AVAILABLE(10_8, 6_0);

表示此APO在MAC OS 10.8及iOS 6.0之后才能使用。

NS_DEPRECATED_IOS(ios起始版本,ios结束版本)

1
- (void)deprecated NS_DEPRECATED_IOS(9_0, 10_0);

NS_DEPRECATED_IOS(9_0, 10_0)代表在iOS 9.0引入,并在iOS 10.0废弃。这里的废弃是指api仍可以使用,但应该考虑换新的api了

NS_DEPRECATED(macos起始版本,macos结束版本,ios起始版本,ios结束版本)

1
- (void)deprecated NS_DEPRECATED(9_0, 11_0, 7_0, 12_0);

这里的 NS_DEPRECATED(9_0, 11_0, 7_0, 12_0)代表在Mac OS 9.0和iOS 7.0引入,在Mac OS 11.0和iOS 12.0被废弃。

API_DEPRECATED_WITH_REPLACEMENT(“要使用的新api”,macos(起始版本,结束版本),ios(起始版本,结束版本),…)

1
- (void)deprecated API_DEPRECATED_WITH_REPLACEMENT("deprecated_new", macos(10.2,11.0), ios(2.0,10.0), watchos(2.0,API_TO_BE_DEPRECATED), tvos(9.0,10.0));

这里的API_DEPRECATED_WITH_REPLACEMENT("deprecated_new", macos(10.2,11.0), ios(2.0,10.0), watchos(2.0,4.0), tvos(9.0,10.0))表示此API在macOS10.2, iOS2.0,watchOS2.0,tvOS9.0开始引入,在macOS11.0, iOS10.0,watchOS4.0,tvOS10.0被废弃.

DEPRECATED_MSG_ATTRIBUTE(字符穿描述)

1
- (void)deprecate DEPRECATED_MSG_ATTRIBUTE("过期描述") ;

DEPRECATED_MSG_ATTRIBUTE("过期描述")表示此API过期了, 括号中是过期的描述

NS_CLASS_AVAILABLE_IOS(ios版本)

1
2
3
4
NS_CLASS_AVAILABLE_IOS(8_0)
@interface MyView : UIView
类内容...
@end

MyView这个类在iOS 8.0中引入。

NS_CLASS_AVAILABLE(macos版本,ios版本)

1
2
NS_CLASS_AVAILABLE(10_6, 4_0)
@interface MyView : UIView

MyView这个类在Mac OS 10.6和iOS 4.0引入

NS_CLASS_DEPRECATED_IOS(ios起始版本,ios结束版本,”描述”)

1
2
3
4
NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead") __TVOS_PROHIBITED
@interface UIAlertView : UIView
类内容...
@end

代表UIAlertView在iOS 2.0被引入,在iOS 9.0废弃。

NS_CLASS_DEPRECATED(macos(起始版本,结束版本),ios(起始版本,结束版本),”文字描述”)

1
2
NS_CLASS_DEPRECATED(10_0, 10_6, 2_0, 4_0, "描述文字")
@interface MyView : UIView

MyView在Mac OS 10.0和iOS 2.0引入,并在Mac OS 10.6和iOS 4.0废弃。

API_AVAILABLE(macos版本,iOS版本, …)

1
-(void)available API_AVAILABLE(macosx(10.10), ios(8.0));

API_AVAILABLE(macosx(10.10), ios(8.0))代表下面的API在Mac OS 10.10和iOS 8.0引入。