我有一个SingletonClass,它只有一个实例。我想扩展它并添加一个类别(MoreFeatures)。
我创建了一个源SingletonClass + MoreFeatures,其接口/实现如下:
@interface SingletonClass (MoreFeatures)
- (void) feature;
@end
@implementation SingletonClass (MoreFeatures)
- (void) feature
{
}
@end
当我创建我的SingletonClass时,我遵循了Apple在cocoa中实现Singleton实现的例子。
这个单例位于项目B中,它是较大项目A的依赖项。
我可以从项目A中的源代码调用[[SingletonClass sharedInstance] foo]
,它可以在函数foo位于SingletonClass接口/实现中的情况下工作。当我尝试从项目A中的源代码调用[[SingletonClass sharedInstance] feature]
时,我遇到了崩溃,它表示类SingletonClass没有方法功能......
为什么会这样?
非常感谢,
纳瓦
编辑:崩溃发生在运行时。类别文件源与SingletonClass
一起驻留在项目B中答案 0 :(得分:0)
听起来你的类别实现在构建项目A时没有被编译。这种事情肯定是可能的,Foundation / AppKit / UIKit大量使用类别来分割多个文件中的大类。
您没有说清楚项目B如何包含在项目A中。如果它是框架,共享或静态库,那么请确保您的类别文件包含在项目B“编译源”构建阶段中。如果它作为源包含,请确保将该文件编译为项目A build的一部分。
答案 1 :(得分:0)
您需要为项目指定-all_load和-ObjC链接器标志。
希望这有帮助, Moszi