我可以使用内联的Objective-C方法吗?

时间:2014-02-18 02:54:50

标签: objective-c methods inline

我们可以将C函数定义为inline。但Obj-C方法怎么样?我可以将方法“内联”编辑吗?

2 个答案:

答案 0 :(得分:6)

遗憾的是,目标C方法无法内联。

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

答案 1 :(得分:2)

不,Objective-C方法不能。

然而,

C函数可以是。

Objective-c在#define中提供了方便的coreGraphics.h,因此您可以使用它来调整类似的内容

#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(...) { }