我正在使用单例对象/类,并且需要经常调用其中一个方法,并且需要从大型项目中的许多位置调用它。我需要定义一个宏来处理这个问题,但目前还没有工作。这也需要处理变量参数列表。这就是我为#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'会更容易,但我不能这样做。为什么?好吧它很复杂,所以我们假设我需要弄清楚如何使用宏...
谢谢!
答案 0 :(得分:1)
看起来您忘记添加文件,其中包含MyClassName
或MyClass
的实现(您可以通过两个不同的名称来引用它,因此不确定哪一个是正确的)到您的项目中。