1

内部で Google ツールボックス for iPhone を使用しているように見える iPhone アプリにライブラリを統合しています。Google ツールボックスはgtm_stringBySanitizingAndEscapingForXMLNSString にメソッドを追加します。問題は、このライブラリを呼び出そうとするたびに、

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

そのため、ライブラリはカテゴリが適用されない NSCFString でそのメソッドを呼び出しているようです。では、このカテゴリは、無料のブリッジを介して CoreFoundation クラスに適用されないということでしょうか? もしそうなら、私たちは少なくともそれが爆発している理由を知っています. それを修正する方法を理解することは別の問題です。

4

3 に答える 3

2

NSCFStringはNSStringのサブクラスであるNSMutableStringのサブクラスであるため、NSStringに適用されるカテゴリはNSCFStringにも適用されます。

しかし、実際にGoogle Toolboxライブラリ(GTMNSString+XML.m)を含めましたか?

于 2010-04-26T05:22:42.183 に答える
2

NSCFStringNSMutableStringclass は...のサブクラスではありませんNSString。クラスターの別のクラスです。したがって、NSCFStringfoo 変数があり、これをテストする場合:

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

あなたはそれが得られisNSStringますNO

カテゴリを作成したため、いくつかの問題が発生していますが、クラスがそのクラスターの である場合、または他のクラス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 に答える