Реализация -init vs. + initialize

Может кто-нибудь объяснить, почему мы должны включитьif (self == SomeClass class) внутри+initialize метод?

Я нашел похожие вопросы (перечислены ниже), но не нашел никаких конкретных разъяснений:

Цель-C: инициализация против инициализацииДолжна ли + initialize / + load всегда начинаться с: if (self == [MyClass class]) guard?

Все говорят, что если вы не внедрите / не переопределите+initialize в подклассе он будет вызывать родительский класс дважды.

Может ли кто-нибудь объяснить эту часть, в частности, почему она дважды вызывает родительский класс?

И наконец, почему этого не происходит, когда мы реализуем+initialize в классе, который наследует от NSObject, где мы создаем пользовательский-init метод и вызовself = [super init];.

Ответы на вопрос(3)

Ваш ответ на вопрос