Iphone 类h宏
例如,是否可以有一个自定义的可用性宏,如_OSX_AVAILABLE_启动。我需要它以同样的方式执行,我只需要更改它的名称、版本和参数的数量 当然可以。Objective-C是C的一个严格超集,因此C宏在很大程度上可供您使用,而该工具只是一组最终扩展到的C宏 有关声明均已提交Iphone 类h宏,iphone,ios,objective-c,cocoa,Iphone,Ios,Objective C,Cocoa,例如,是否可以有一个自定义的可用性宏,如_OSX_AVAILABLE_启动。我需要它以同样的方式执行,我只需要更改它的名称、版本和参数的数量 当然可以。Objective-C是C的一个严格超集,因此C宏在很大程度上可供您使用,而该工具只是一组最终扩展到的C宏 有关声明均已提交 要刷新,请使用\u OSX\u AVAILABLE\u start宏标记特定版本支持的函数声明,如下所示: extern void mymacfunc() __OSX_AVAILABLE_STARTING(__M
\u OSX\u AVAILABLE\u start
宏标记特定版本支持的函数声明,如下所示:
extern void mymacfunc() __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_NA);
那么,我们自己需要什么来实现这一点呢?如果你剥掉他们的衣服
支持两种不同的操作系统(mac、iphone),可用性设施归结为:
\uuuuuMy\uAvailable\uStarting()
:
Availability.h
中的版本参数,它们是上述版本的有效参数:
#define __MYVER_2_0 20000
#define __MYVER_2_1 20100
#define __MYVER_2_2 20200
#define __MYVER_3_0 30000
AvailabilityInternal.h
中的thos,指定每个版本应执行的操作(常规支持、不推荐、不可用、弱等)。同样,这是编译器的一个功能,请参见(还有许多其他有趣的选项):
\uuu属性\uuu
功能的宏
对于上面提到的那些,你可以继续使用苹果的宏:
#define __AVAILABILITY_INTERNAL_DEPRECATED __attribute__((deprecated,visibility("default")))
#define __AVAILABILITY_INTERNAL_UNAVAILABLE __attribute__((unavailable,visibility("default")))
#define __AVAILABILITY_INTERNAL_WEAK_IMPORT __attribute__((weak_import,visibility("default")))
#define __AVAILABILITY_INTERNAL_REGULAR __attribute__((visibility("default")))
当然,你也可以定义自己的疯狂C宏是功能强大的东西,经常被忽视。祝你好运 谢谢你的详细答复。不过,我还有一个问题。这些宏是否有一个主体,或者这就是我需要做的全部?不,这就是它的全部
#define
只需要两个参数,identifier和replacement。有关更多信息,请参阅。
#define __MY_AVAILABILITY_INTERNAL__MYVER_2_0 __AVAILABILITY_INTERNAL_UNAVAILABLE
#define __MY_AVAILABILITY_INTERNAL__MYVER_2_1 __AVAILABILITY_INTERNAL_WEAK_IMPORT
#define __MY_AVAILABILITY_INTERNAL__MYVER_2_1 __AVAILABILITY_INTERNAL_REGULAR
#define __AVAILABILITY_INTERNAL_DEPRECATED __attribute__((deprecated,visibility("default")))
#define __AVAILABILITY_INTERNAL_UNAVAILABLE __attribute__((unavailable,visibility("default")))
#define __AVAILABILITY_INTERNAL_WEAK_IMPORT __attribute__((weak_import,visibility("default")))
#define __AVAILABILITY_INTERNAL_REGULAR __attribute__((visibility("default")))