Просто интересно:
В NSString
есть статический метод под названием +stringWithString:
.
Он не переопределен/переопределен в NSMutableString
, поэтому мы не можем предположить, что он вернет NSMutableString
. На самом деле даже в классе NSString возвращаемый тип определен как id
, а в doc говорится:
Возвращаемое значение
Строка, созданная путем копирования символов изaString
.
Какой части объектного C мне не хватает в моих знаниях, чтобы понять, почему это работает и возвращает NSMutableString
? Особенно потому, что базовый класс NSString
не знает, что мы хотим получить в ответ изменяемую строку.
Можно сказать, что внутри вызывается [Class alloc]
, который генерирует объект типа NSMutableString
, но даже это чистое предположение, поскольку у нас нет исходного кода, а stringWithString:
может делать внутри все, что захочет.
Реализованы ли все эти методы класса в подклассе? И если да, то почему это не документировано?