Я очень плохо знаком с целью-c, и я тоже получаю эту ошибку, но по другой причине. Я просто хотел опубликовать свое решение для всех, кто может бороться.
Так что в основном у меня есть собственный класс ImagesDetailViewController, который наследуется от UIViewController и имеет свойство image.
@interface ImagesDetailViewController : UIViewController
@property (strong, nonatomic) UIImage *image;
@end
Затем я подключил свой класс к своему UIImageView на моей раскадровке так:
@interface ImagesDetailViewController ()
@property (nonatomic, weak) IBOutlet UIImageView *imageView;
@end
В моем методе viewDidLoad я пытался установить изображение для моего изображения таким образом и получал ошибку, упомянутую выше (моя переменная изображения инициализируется в методе prepareForSegue)
- (void)viewDidLoad
{
[super viewDidLoad];
[self.imageView setImage:self.image];
}
Так что я был в замешательстве, держу пари, что вы тоже все. Проблема была связана с раскадровкой. Нажав на мой UIImageView и затем перейдя к инспектору подключений, я каким-то образом создал 2 выходных канала (к сожалению ...), и один указывал на переменную с именем image. Поэтому, когда программа работала [self.imageView setImage: self.image] self.image был фактически экземпляром UIImageView вместо UIImage.