0

假设虚拟 VC 有一个私有属性“图像”

虚拟VC.h

@interface dummyVC : UIViewController
@end

虚拟VC.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.

但是,如果我将属性名称更改为image1or anotherImage_image1使用和没有问题_anotherImage

谁能解释为什么会这样?

4

1 回答 1

1

我猜这个问题要么是

  1. 你是说

    @synthesize image;
    

    没有告诉我们,或者

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

当你说做这些事情中的任何一个提供一个设置器时,就像你在这里所做的那样 ( setImage:),那么合成的实例变量是命名的image,而不是命名的_image。但是如果你提供 setter 和 getter,或者你@synthesize,合成的实例变量被命名为_image

我敢打赌,这就是您的案例之间的区别。

于 2014-03-02T03:44:55.850 回答