我有一个使用内联C函数的库,编译得很好.当另一个库引用该库时,它仍然编译好.但是如果一个实际的应用程序引用了库,它就无法编译,说_functionNameHere(是的,函数名以下划线开头) - 符号未找到.
如果我删除内联说明符,它编译都很好.但只要函数在库中内联,app就无法编译!
有什么想法是为什么?
我对编译器非常了解,但我对Objective-C不熟悉,而我所知道的任何东西都只是有根据的猜测.即便如此,我也无法想到它会以这种方式表现的原因.
问题是,内联函数是INLINE,这意味着根本没有符号,无论在何处调用它都是内联编译的,并且引用应用程序甚至不应该知道它曾经存在过.只要内联函数始终是内联函数并且对库是私有的,并且没有特殊的编译器配置阻止内联,并且所有这些都是正确的,这是正确的.
所以,任何人都应该指出我正在做什么/想错了......
谢谢 :-)
我有一个只有静态方法的实用程序类,所以它不是从NSObject继承的(不需要对吗?)
编译时根本没有警告.
在iPhone模拟器上运行时出现问题.它崩溃时发出警告"没有实现methodSignatureForSelector: - 提前出现故障"嗯,我喜欢那个"麻烦未来"的事情,我从来没有听过一个调试器告诉我有"前方有问题".但是我不喜欢的是错误本身......当我明确地调用静态方法时,为什么期望我在类中实现methodSignatureForSelector?(+)
谢谢!丹尼尔