Iphone 类h宏

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

例如,是否可以有一个自定义的可用性宏,如_OSX_AVAILABLE_启动。我需要它以同样的方式执行,我只需要更改它的名称、版本和参数的数量

当然可以。Objective-C是C的一个严格超集,因此C宏在很大程度上可供您使用,而该工具只是一组最终扩展到的C宏

有关声明均已提交

要刷新,请使用
\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,指定每个版本应执行的操作(常规支持、不推荐、不可用、弱等)。同样,这是编译器的一个功能,请参见(还有许多其他有趣的选项):

  • 最后,在buck结束的地方,是扩展到
    \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")))