相关疑难解决方法(0)

LLVM是否将Objective-C方法转换为内联函数?

  1. LLVM是否会在可能的情况下自动将Objective-C方法转换为内联函数?

    (即,为一块代码创建一个Objective-C方法,你可以在其他方式粘贴内联吗?)

  2. 如果LLVM不执行此优化,为什么不呢?如果是,(a)是否有必须为此设置的某些构建设置?(b)如何判断是否内联Objective-C方法?

performance objective-c llvm inline-functions

13
推荐指数
3
解决办法
2156
查看次数

我可以在Objective-C中内联静态类方法吗?

您可以将函数声明为如下内联:

#ifdef DEBUG
void DPrintf(NSString *fmt,...);
#else
inline void DPrintf(NSString *fmt,...) {}
#endif
Run Code Online (Sandbox Code Playgroud)

因此,当您不在DEBUG中时,该功能不会产生任何成本,因为它已经过优化和内联.如果你想拥有相同的东西但是对于类方法怎么办?

我的类声明如下:

@interface MyClass : NSObject {

}

    + (void)DPrintf:(NSString *)format, ...;
    // Other methods of this class
@end
Run Code Online (Sandbox Code Playgroud)

我想将' DPrintf'转换为类似的东西,inline以便调用该方法没有成本.

但我不能这样做:

inline +(void)DPrintf:(NSString *)format, ...; {}
Run Code Online (Sandbox Code Playgroud)

如何为非调试编译关闭类的零成本静态方法?

methods inline objective-c

5
推荐指数
2
解决办法
6639
查看次数