【问题标题】:Can I make an Objective-C method inlined? [duplicate]我可以内联一个 Objective-C 方法吗? [复制]
【发布时间】:2014-02-18 02:54:50
【问题描述】:

我们可以将 C 函数定义为 inline。但是 Obj-C 方法呢?我可以将方法“内联”吗?

【问题讨论】:

标签: objective-c methods inline


【解决方案1】:

不幸的是,Objective C 方法永远不能内联。

有很多事情会影响发送消息时调用哪个方法,并且它可以在运行时更改,因此内联是不可能的。 Java 有“final”来缓解这个问题,但 Objective C 没有直接的等价物。相反,您可以在时间紧迫的情况下使用纯 C 函数来规避问题。

【讨论】:

    【解决方案2】:

    不,Objective-C 方法不能。

    C 函数不过可以。

    Objective-c 在coreGraphics.h 中提供了一个方便的#define,因此您可以使用它来适应类似的东西

    #if !defined(CG_INLINE)
    # if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #  define CG_INLINE static inline
    # elif defined(__cplusplus)
    #  define CG_INLINE static inline
    # elif defined(__GNUC__)
    #  define CG_INLINE static __inline__
    # else
    #  define CG_INLINE static    
    # endif 
    #endif
    

    所以你的内联函数看起来像这样:

    CG_INLINE void doWork(...) { }

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多