Единственная проблема с вашим кодом, которую я вижу, это то, что вы назвали ваш инициализатор -initObject
без уважительной причины.Он вообще не принимает никаких параметров, поэтому вам действительно нужно просто назвать его -init
, как и любой другой инициализатор без параметров в системе.
Что касается вывода журнала, я думаю, что ваша путаница заключается в том, что<Rectangle: 0x6ab1660>
.Это совершенно нормально.Реализация по умолчанию -description
(метод, который возвращает этот вывод) - это имя класса объекта, за которым следует адрес объекта.Другими словами, -[NSObject description]
, вероятно, будет реализовано что-то вроде следующего:
- (NSString *)description {
return [NSString stringWithFormat:@"<%@: %p>",
NSStringFromClass([self class]),
self];
}
Это означает, что переменные экземпляра вашего объекта не будут напечатаны.Некоторые встроенные классы печатают свои переменные экземпляра при регистрации, но это было реализовано специально для этого класса и не является универсальным механизмом.Если вы хотите проверить правильность вашего объекта Rectangle
, вы можете реализовать -description
следующим образом:
- (NSString *)description {
return [NSString stringWithFormat:@"<%@: %p width=%d, height=%d>",
NSStringFromClass([self class]),
self,
width,
height];
}