我正在编写一个库,它将语法糖添加到本机iOS框架函数中。因此,我正在扩展本机类型,如NSString和NSArray。例如:
@implementation NSString (NPB)
-(BOOL) includesCharsInString: (NSString *)charsInString
{
NSCharacterSet *charset = [NSCharacterSet characterSetWithCharactersInString:charsInString];
return [self rangeOfCharacterFromSet:charset].location != NSNotFound;
}
@end
在我的测试框架中,我包含扩展的.h文件,并将库作为目标依赖项,并且还链接到它。但是,当我针对库编写测试时,测试失败并显示“无法识别的选择器发送到...”错误。
如果我在编译源列表中包含相应的.m文件,那么它可以正常工作。但如果我链接到图书馆,为什么我需要这样做呢?
答案 0 :(得分:1)
由于链接器无法找到类别代码的任何用法,因此默认情况下,它们在链接库时会被剥离。在构建设置中,将-ObjC添加到链接器标志。