Наиболее вероятным объяснением является ошибка сообщения.
Обычно, когда люди видят другой адрес для объекта, это потому, что они использовали неверный дескриптор формата в своих операторах журнала.
Распространенная ошибкаэто:
NSLog(@"Object address=%i", myObject); // any numerical formatter %d,%f...
... который производит случайное число.Вы действительно хотите:
NSLog(@"Object address=%%qX",&myObject);
... который выводит адрес в шестнадцатеричном виде.
Другая ошибка:
NSLog(@"Object address=%%qX",&[myObject description]);
..., которая возвращает адрес строки описания, которая меняется каждый раз.
Есть и другие, но вы поняли идею.
Если вы используете операторы журнала, проверьте вместо этого адрес в отладчике, чтобы убедиться, что это другой объект.
Не связано, но я бы избавился от методов инициализатора класса, потому что они ничего не делают, но вызывают супер.Вы могли бы просто позволить компилятору по умолчанию установить супер, если вы не настраиваете.