陈斌彬的技术博客

Stay foolish,stay hungry

__OSX_AVAILABLE_BUT_DEPRECATED

我们在开发的过程中会发现某些方法被 deprecated 了,这是因为这些方法已经被更好的方法代替了,或者是这些放在在当初设计的时候考虑不全面等。

__OSX_AVAILABLE_BUT_DEPRECATED() 宏说明,在某个版本开始引进一个方法,但是在某个版本之后废弃了。

__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_5,__IPHONE_NA,__IPHONE_NA)

在 Mac OS X 10.0 开始引进这个方法,但是在 10.5 之后废弃了,iOS 上从来没只支持过。

我们可以自己写一些方法 extern void mymacfunc() __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_NA);

这个函数在 Mac OS X 10.5之后可用,在 iOS 上不可用

 @interface MyClass : NSObject
        -(void) mymacmethod __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_NA);
        -(void) mymacandiosmethod
 @end

这个类中的mymacmethod 在 Mac OS X 10.5可用,在 iOS 上不可用,但是mymacandiosmethod就没有限制了。