次のようなライブラリにコードを配布しています。
if ([[NSString class] instancesRespondToSelector: @selector(JSONValue)]) {
NSString *jsonString = [[[NSString alloc] initWithData: jsonData encoding: NSUTF8StringEncoding] autorelease];
dict = [jsonString performSelector: @selector(JSONValue)];
}
メソッドが呼び出されると、何らかの理由で-[__NSCFString JSONValue]: unrecognized selector sent to instance
例外がスローされます。performSelector:
これは私が書いたライブラリで配布されているコードですが、自分で再現またはデバッグすることはできません。代わりに、サードパーティがこの問題を報告しています。instancesRespondToSelector:
実際にperformSelector:
例外をスローしてメソッドを呼び出しているときに、どのような条件下で発生する可能性がありますか?
編集 なぜこれが起こるのか説明できるケースがありますが、意味がありません. 開発者が次のようなことをした場合:
@implementation NSString (OurHappyCategory)
+ (BOOL)instancesRespondToSelector:(SEL)aSelector
{
return YES;
}
@end
コードが実行されている理由を説明できますが、もちろんそれは非常に悪いことです。この問題が発生する可能性のある方法はありますか?