Это тонкая, досадная ошибка для начинающих. (Я на самом деле только что столкнулся с этой на прошлой неделе.)
Когда вы используете строку формата %@
в NSLog, аргумент должен быть неким объектом Objective-C. (За кадром, когда вы делаете NSLog(@"%@", foo)
, система вызывает [foo description]
, чтобы выяснить, какую строку выводить. Если переменная, которую вы передаете NSLog, не является объектом Objective-C, система попытается отправить сообщение что-то, что не является объектом, а затем выбросить эту ошибку.)
В этом конкретном случае вы получите целое число, поэтому замените %@
на %d
в строке формата, чтобы все работало нормально.
Кроме того, как упомянул Евгений, вы хотите получить доступ к части объекта size
. Так что попробуйте
NSLog(@"size.height=%d", myImage.size.height);
Редактировать: на самом деле это должно быть %f
вместо %d
, и, пожалуйста, прочитайте комментарии к этому ответу.