Нет видимого ивара для свойства с именем "изображение"?

Предположим, у фиктивного ВК есть частная собственность "Имидж"

dummyVC.h

@interface dummyVC : UIViewController
@end

dummyVC.m

@interface dummyVC ()
@property (nonatomic, strong) UIImage *image;
@end


- (void)setImage:(UIImage *)image
{
    if(!_image) { // compiler tells me _image is a 'undeclared indentifier'
        //do something
    }
}

Если я попытаюсь использовать _image в своем установщике компилятор говорит мне, что я использую undeclared identifier,

Однако, если я изменю имя свойства на image1 или же anotherImage, Там нет проблем с использованием _image1 а также _anotherImage,

Кто-нибудь может объяснить, почему это произошло?

1 ответ

Решение

Я собираюсь догадаться, что проблема либо

  1. Ты говоришь

    @synthesize image;
    

    не говоря нам об этом, или

  2. вы предоставляете метод получения image не говоря нам об этом.

Когда вы говорите, что делаете одну из этих вещей, и вы поставляете сеттер, как вы делаете здесь (setImage:), то синтезированная переменная экземпляра называется imageне _image, Но если вы не поставите и сеттер, и геттер, или вы не скажете @synthesize, синтезированная переменная экземпляра называется _image,

Держу пари, что это разница между вашими делами.

Другие вопросы по тегам