1

我们正在将一个库集成到一个 iPhone 应用程序中,该应用程序似乎在内部使用 google toolbox for iPhone。google 工具箱gtm_stringBySanitizingAndEscapingForXML向 NSString 添加了一个方法。问题是,每当我们尝试调用这个库时,我们都会得到

[NSCFString gtm_stringBySanitizingAndEscapingForXML]: unrecognized selector sent to instance 0x272478

因此,该库似乎在 NSCFString 上调用该方法,该类别不适用于该类别。那么......是否该类别不适用于通过免费桥梁到 CoreFoundation 课程的情况?如果是这样的话,那么我们至少知道它为什么会爆炸。弄清楚如何解决它是另一回事。

4

3 回答 3

2

应用于 NSString 的类别也适用于 NSCFString,因为 NSCFString 是 NSMutableString 的子类,而 NSMutableString 是 NSString 的子类。

但是您是否真的包含了 Google Toolbox 库 ( GTMNSString+XML.m)?

于 2010-04-26T05:22:42.183 回答
2

NSCFString类不是...的子类,它只是集群NSMutableString的另一类。NSString因此,如果您有一个NSCFStringfoo var 并且您对此进行了测试:

BOOL isNSString = [foo isKindObClass:[NSString class]];

你会得到那isNSStringNO

我遇到了一些问题,因为我创建了一个类别,当该类是该集群中的一个或任何其他类NSString时,我不知道如何应用新方法......NSCFString


编辑:好的,我找到了解决方案。尽管这些测试返回NO

[myString isKindOfClass:[NSString class]];
[myString respondsToSelector:@selector(myNSStringCategorySelector:)];

我强制执行NSCFString该类的方法,它工作正常!!

我希望它会帮助别人!

于 2011-07-29T09:40:22.413 回答
0

听起来这个类的实现没有链接到你的程序中。假设您的库被编译为静态库,您可能需要将-ObjC链接器标志添加到您的项目中。有关更多信息,请查看此技术说明。那里提到的链接器错误应该用最新的 Xcode 版本修复。

于 2013-01-16T07:41:57.653 回答