вы присваиваете экземпляр NSString
вашей переменной типа OverrideTester
. Если вам нужен экземпляр вашего класса, вам нужно создать экземпляр этого класса; приведение типов никогда не изменит класс экземпляра.
description
определяется как возвращающий NSString*
:
- (NSString *)description;
Не не попытаться узнать о методах создания подклассов и переопределения путем создания подклассов NSString
(или любого другого кластера классов). Если вы хотите поиграть с подклассами и тому подобным - очень хорошая идея, если вы новичок в языке, конечно же, - тогда подкласс NSObject, потенциально несколько уровней, и играйте там.
<Ч />
Как вы имеете в виду подкласс NSObject,
потенциально несколько уровней? Не так ли
возможный NSObject может иметь
конфликтующие методы по сравнению с другими
кластеры классов или просто не имеют их
доступно для переопределения?
Если ваша цель состоит в том, чтобы выяснить, как метод переопределяет работу (что я и думал), то вам лучше сделать это полностью самостоятельно.
Возможно, я неправильно прочитал ваш вопрос.
В любом случае, создание подклассов NSString практически никогда не выполняется. Есть очень мало случаев, когда это полезно. Да, полезно переопределить description
в любом другом месте, кроме пользовательских классов, специально для целей отладки Вызывать description
в рабочем коде никогда не следует.
Кроме того, почему описание должно возвращать
NSString * в этом коде?
Что бы произошло, если бы что-то, ожидающее возвращаемого значения NSString*
, вызвало бы вашу версию, которая ничего не возвращает?
Авария.