Availability

#define __AVAILABILITY__

/*

这些宏都是用在头文件种。它们是作用于和系统版本有关的函数声明或者函数,如果它们是可用的就标示它们首次有效的方法;或者被抛弃的函数。

MAC OS 和_IOS_ 有不同的版本号,_OSX_AVALIABALE_STARTING()这个宏可以标识_MAC OS_和_IOS

比如: __OSX_AVALABLE(_MAC_10_2,_IPHONE_2_0)表示这个函数可用的最低的版本是_MAC OS X 10.2_和_IOS 2.0.

如果一个函数在一个平台上可用,在另一个不可用,会加上__NA(not applicable)_这个属性。

比如_: _OSX_AVALIBLE_STARTING(_MAC_10_3,_IPHONE_NA)_标识最低可用于_MAC OS_的版本是

MAC OS 10.3,在_IOS_平台上不可用。

有时,一个函数_/_方法被抛弃了。这表示苹果推不推荐使用者再使用这个函数,或者有更好的替代的函数。

被抛弃的方法/函数,可以被标记为:

__OSX_AVAILABLE_BUT_DEPRECATED()_的宏,表示该函数/方法是可用的,但是也是被抛弃了的。

比如说:

_OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_5,__IPHONE_NA,__IPHONE_NA),表示在在_MAC10.0_的时候被引入了,

在_MAC 10.5_的时候被抛弃了。在_IOS_平台中这个函数是不可用的。

为了这些宏正常的使用,程序必须指定程序的系统版本。为编译器的指定最低的系统版本:当在_MAC OS_下编译程序的时候,表示为

mmacos-version-min = 10.x ,

当在_IOS_下编译程序的时候表示为 -miphone-version-min=1.x.x。最高的编译版本是很少需要,

但是可以通过命令行:MAC OS 下形如,-D__MAC_OS_X_VERSION_MAX_ALLOWED=10xx ,

IOS_下形如,__IPHONE_OS_VERSION_MAX_ALLOWED = 1xxx ._

例子:

一个函数在_MAC OS X 10.5_及其以后版本可用,但是在_IOS_下是不可用的。

extern void mymacfunc() __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_NA);

一个_OC_函数在_MAC OS X 10.5_及其以后版本可用,但是在_IOS_下是不可用的。

@interface MyClass : NSObject

-(void) mymacmethod __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_NA);

@end        一个枚举变量在IOS 2.1及其以后版本可用,但是在MAC OS中是不可用的

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 20100                enum { myEnum = 1 };            #endif

笔记:这个枚举在_MAC OS_平台上是起作用的因为

__IPHONE_OS_VERSION_MIN_REQUIRED 没有定义,这个值为_0,_所以#_if 0>20100_为错。同时,我们用_20100_代替 ___IPHone_2_1_是安全的,

__IPHONE_2_1 在_2.1SDK_以前的_<Availability.h>_中是不存在的。所以,用于以前的版本的时候,这将是不正确的。

在源代码中使用 _*_VERSION_MIN_REQUIRED_也是可能的,使某个源代码在目标的系统下是可编译的。最好是不要用

_MAC_* 和 ___IPHONE_*_宏来做比较,而是用他们的所定义的值。这是因为在低版本的环境中没用定义那个宏。

最后

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

[外链图片转存中…(img-oDWFxP7o-1720086067255)]

[外链图片转存中…(img-qqXs9FWE-1720086067258)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值