Objective-C:类似函数的宏。方法

时间:2011-04-11 15:27:24

标签: objective-c performance function methods macros

在Objective-C中,您何时建议在类或实例方法上使用类似函数的宏?

4 个答案:

答案 0 :(得分:5)

他们是非常不同的东西。函数或方法在代码中只存在一次;每次使用宏时,宏都会将其整个定义插入到代码中。

有些人利用了这样一个事实:短宏可以扩展为一大块代码,而不是像C ++样式模板的廉价替代品。 Matt Gallagher's singleton macro就是一个例子。和模板一样,过度使用大型宏会导致令人惊讶的大型代码和大量调试问题。

除了常量和微小的表达式之外,如果你可以使用函数或方法代替宏,你可能应该这样做。

答案 1 :(得分:3)

在我看来,永远不会。宏是有效的文本替换工具,在编译器级别工作,而不是在执行代码时。这对于定义常量等很有用,但对于更复杂的事情则不好。

当代码中有大量重复时,似乎会使用类似函数的宏,因此您不必在十三个不同的位置维护相同的例程。但是,如果您能够以这种方式成功使用宏,那么您的代码组织得很差 - 您可能最好还是重构它,并创建一个方法来实现它。

答案 2 :(得分:2)

很难理解你实际要问的是什么,但我推荐将函数放在宏上作为一般规则,因为它们执行类型检查,显示更清晰的意图并使调试更容易。

答案 3 :(得分:-1)

我认为执行敏感操作时宏更好,因为它很难进行调试。

例如,不使用返回布尔值的 isJailBroken()等方法,而是可以使用宏来查明设备是否已越狱。

这使得攻击者的工作难以进行运行时操作!