Я изучаю данные архивирования, и понимаю, что стандартные классы коллекций обеспечивают легкую архивацию, однако я хочу архивировать NSMutableArray
. Поэтому я прочитал, что с NSMutableArray
«является« NSArray
, потому что это подкласс, тогда это нормально.Подкласс класса «is» меня смущает
Но эта идея претит меня, и я понимаю, что это базовая концепция Objective-C, поэтому я хочу убедиться, что я прав.
Предположим, у вас есть класс «автомобиль» с подклассом «джип». Теперь на основе выше, вы можете сказать следующее:
automobileInstance=jeepInstance;
... потому что джип подкласс автомобиля.
Но это кажется мне обратным. Я думаю, вы должны вместо этого сказать, что экземпляр подкласса может быть равен его суперкласс, например:
JEEP = АВТОМАТ
Потому что после того, как весь джипа «является» автомобилем, но не все автомобили джипы.
Так почему же тогда вы можете сделать это:
NSArray*newArray=nsmutableArrayInstance;
Это та же идея, как говорят:
automobile=jeep;
в моем примере.
Возможно, ваш подкласс мог добавить много новых переменных экземпляра, но если вы установите его равным суперклассу, эти iVars будут «потеряны» или, по крайней мере, суперкласс не узнает их, поэтому он не Казалось бы, действительно захватить объект.
Идти, говоря, что sublass instance = superclass instance
имеет смысл, поскольку все в суперклассе находится в подклассе; вы просто не получаете значения для дополнительных iVars, которые находятся в подклассе, но не в суперклассе, они могут быть установлены на ноль по умолчанию, но по крайней мере они существуют.
Объектив-C не соответствует структуре предложения английского языка. –
Учтите, что у вас есть место для парковки автомобилей. Джип может пойти туда, потому что Джип - это Автомобиль. Но если бы у вас было парковочное место специально для джипов, вы не могли бы просто вставить в него какой-нибудь старый случайный автомобиль, не так ли? Возможно, это не джип. Теперь подумайте, что 'Automobile * auto' объявляет место для размещения автомобилей (технически, указателей на автомобили, но eh). Место для парковки, если хотите. – cHao