Я играл с методом responsesToSelector в Objective-C на MacOS-X 10.6.7 и Xcode 4.0.2, чтобы определить, будет ли объект отвечать на определенные сообщения. Согласно руководствам, NSString не должен отвечать на appendString: в то время как NSMutableString должен. Вот фрагмент кода, который его проверяет:
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *myString = [[NSString alloc] init];
if ([myString respondsToSelector:@selector(appendString:)]) {
NSLog(@"myString responds to appendString:");
} else {
NSLog(@"myString doesn't respond to appendString:");
}
// do stuff with myString
[myString release];
[pool drain];
return 0;
}
и здесь вывод:
Class02[10241:903] myString responds to appendString:
Я бы хотел, чтобы все было наоборот. Как объект NSString отвечает на appendString:? Что происходит здесь, что мне не хватает?