对于名为" image"?的属性,没有可见的ivar?

时间:2014-03-02 01:49:36

标签: ios objective-c properties uiviewcontroller ivar

假设虚拟VC具有私有属性“image”

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
    }
}

如果我尝试在其setter中使用_image,编译器会告诉我我正在使用undeclared identifier

但是,如果我将属性名称更改为image1anotherImage。使用_image1_anotherImage没有问题。

有人可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

我猜这个问题要么

  1. 你在说

    @synthesize image;
    

    没有告诉我们,或

  2. 您提供了一个getter方法image而没有告诉我们。

  3. 当你说中的任何一个你在这里提供一个setter(setImage:)时,那么合成的实例变量名为image,而不是_image。但是如果同时提供setter和getter,或者@synthesize,则合成的实例变量名为_image

    我打赌这是你的案件之间的区别。