Почему работает [NSMutableString stringWithString:@""]?

Просто интересно:

В NSString есть статический метод под названием +stringWithString:. Он не переопределен/переопределен в NSMutableString, поэтому мы не можем предположить, что он вернет NSMutableString. На самом деле даже в классе NSString возвращаемый тип определен как id, а в doc говорится:

Возвращаемое значение
Строка, созданная путем копирования символов из aString.

Какой части объектного C мне не хватает в моих знаниях, чтобы понять, почему это работает и возвращает NSMutableString? Особенно потому, что базовый класс NSString не знает, что мы хотим получить в ответ изменяемую строку.

Можно сказать, что внутри вызывается [Class alloc], который генерирует объект типа NSMutableString, но даже это чистое предположение, поскольку у нас нет исходного кода, а stringWithString: может делать внутри все, что захочет.

Реализованы ли все эти методы класса в подклассе? И если да, то почему это не документировано?

7
задан Joris Mans 1 December 2011 в 16:16
поделиться