super
- это способ отправить сообщение самому себе и вызвать реализацию суперкласса, а не свою собственную. Это не отдельный объект.
NSLog
принимает объект в качестве параметра для %@
, и объект, который вы намереваетесь передать, это вы сами.
Честно говоря, я удивлен, что рассматриваемый код даже компилируется.
Если вы хотите записать описание своего суперкласса, а не свое собственное, то, как говорит Алекс Рейнольдс, вы должны использовать сообщение [super description]
для параметра NSLog
. Это отправляет вам сообщение description
с использованием реализации вашего суперкласса и передает объект, который возвращает это сообщение (объект NSString, который является описанием вашего суперкласса) в качестве параметра, в NSLog
.
Но это, вероятно, не обязательно. Если вы переопределили description
, эта реализация может отправить [super description]
и интегрировать эту строку * в строку описания, которую она создает и возвращает. Если вы не переопределили description
, то сообщение description
к self
все равно попадет в реализацию суперкласса. В любом случае, передайте self
, а не super
, на свои NSLog
заявления.
* Существует несколько способов интеграции одной строки в другую; см. документацию NSString для получения более подробной информации.