假设虚拟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
。
但是,如果我将属性名称更改为image1
或anotherImage
。使用_image1
和_anotherImage
没有问题。
有人可以解释为什么会这样吗?
答案 0 :(得分:1)
我猜这个问题要么
你在说
@synthesize image;
没有告诉我们,或
您提供了一个getter方法image
而没有告诉我们。
当你说和中的任何一个你在这里提供一个setter(setImage:
)时,那么合成的实例变量名为image
,而不是_image
。但是如果不同时提供setter和getter,或者不说@synthesize
,则合成的实例变量名为_image
。
我打赌这是你的案件之间的区别。