Objective-C宏 - 调用单例对象的方法

时间:2012-07-31 22:58:30

标签: objective-c ios macros singleton-methods

我正在使用单例对象/类,并且需要经常调用其​​中一个方法,并且需要从大型项目中的许多位置调用它。我需要定义一个宏来处理这个问题,但目前还没有工作。这也需要处理变量参数列表。这就是我为#define做的事情:

#define OldMethod(var, ...) [[MyClass getInstance] myMethod:var, ## __VA_ARGS__]

我也试过这个:

#define OldMethod(var, ...) [[MyClass getInstance] myMethod:[NSString stringWithFormat:fmt, ## __VA_ARGS__]]

结果是编译器错误看起来像这样。

"_OBJC_CLASS_$_MyClass", referenced from:
Objc-class-ref-to-MyClass in AnotherClassDelegate.o
Symbole(s) not found
Collect2: Id returned 1 exit status

作为旁注,这是我最近开始研究的现有项目,此时我无法过多介入它的结构。通过调用new方法替换所有对'OldMethod'的调用,或者重写'OldMethod'会更容易,但我不能这样做。为什么?好吧它很复杂,所以我们假设我需要弄清楚如何使用宏...

谢谢!

1 个答案:

答案 0 :(得分:1)

看起来您忘记添加文件,其中包含MyClassNameMyClass的实现(您可以通过两个不同的名称来引用它,因此不确定哪一个是正确的)到您的项目中。