У меня есть код, распространяемый в библиотеке, который выглядит так:
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
Это объясняет, почему код выполняется, но, конечно, это будет очень плохо. Есть ли способ, которым может возникнуть эта проблема, которая имеет смысл?