Что ж ... Я прочитал и провел много исследований по выражению [super init] в наследовании класса target-c. Даже некоторые вопросы были хорошо объяснены и получены ответы на stackoverflow. Тем не менее, я до сих пор не понимаю, как работает наследование или [супер инициация].
На других языках суперкласс ничего не знает о подклассе. Суперкласс не может вернуть объект подкласса, потому что суперкласс не знает о подклассе. Поэтому мой вопрос: если выражение self = [super init] вернет объект SUPERCLASS или SUBCLASS . Здесь я знаю, что [super init] может вернуть другой объект или ноль, что имеет смысл. Но при условии, что все работает нормально, и ни ноль, ни возврат другого объекта. Если он возвращает обычный объект, он возвращает объект суперкласса или производного класса, который является классом, в котором определено это self = [super init] . Если он возвращает объект суперкласса, то это имеет смысл, но тогда, поскольку, как мы знаем, объект суперкласса ничего не знает о подклассе, как он может получить доступ к членам (полям, сообщениям или методам) подкласса. Если он возвращает объект подкласса, то это не имеет смысла, поскольку суперкласс не может вернуть объект производного класса, потому что суперкласс ничего о нем не знает.
Это один из аспектов, который действительно сбивает с толку тех, кто переходит с других языков на цель-C.