【发布时间】:2014-02-18 02:54:50
【问题描述】:
我们可以将 C 函数定义为 inline。但是 Obj-C 方法呢?我可以将方法“内联”吗?
【问题讨论】:
-
你不能内联一个 Objective-C 函数。您可以内联标准 C 函数。
-
@BenPious 哎呀,是的,重复了。我搜了没找到,所以我自己提出了一个问题。
标签: objective-c methods inline
我们可以将 C 函数定义为 inline。但是 Obj-C 方法呢?我可以将方法“内联”吗?
【问题讨论】:
标签: objective-c methods inline
不幸的是,Objective C 方法永远不能内联。
有很多事情会影响发送消息时调用哪个方法,并且它可以在运行时更改,因此内联是不可能的。 Java 有“final”来缓解这个问题,但 Objective C 没有直接的等价物。相反,您可以在时间紧迫的情况下使用纯 C 函数来规避问题。
【讨论】:
不,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(...) { }
【讨论】: