【发布时间】:2013-10-09 14:41:37
【问题描述】:
-
典型的编译器会内联一个调用一个或多个 Objective-C 方法的 C 函数吗?例如:
NSUInteger AACStringGetLength(NSString *string) { return [string length]; } 带解释的彻底证明加分。
除了递归之外,还有哪些其他因素可能会阻止编译器内联 C 函数?
【问题讨论】:
-
让你想到使用函数的是any different from methods。内联不能发生在动态上下文中,而这正是动态上下文。此外,内联该调用有什么好处?您仍然会收到无法优化的消息发送。如果您想了解内联可以为您做什么,请尝试询问有关内联方法的 IMP 的问题。
-
不,不是。编译器编译“NSUInteger theLength = AACStringGetLength (myString);”是没有问题的就好像你写了“NSUInteger theLength = [myString length];”。
标签: objective-c c function inline message-passing