【发布时间】:2014-07-28 00:52:57
【问题描述】:
我的问题很简单,希望能尽快得到答案。
我正在编写一个 iPhone 应用程序,在我的一个对象上我有一个名为“text”的属性。在实现文件中,我编写了一个自定义设置器:
- (void) setText: (NSString*) text
{
_text = text;
self.textField.text = text;
}
在我尝试实现 getter 之前,这一切正常:
- (NSString*) text
{
return self.textField.text;
}
在我写完之后,编译器开始抱怨 setter 的第一行:
_text = text;
说“使用未声明的标识符 _text;您的意思是“文本”吗?
没有。我不是指文字。我的意思是_text。 你是什么意思哦,强大的编译器?
【问题讨论】:
-
当同时覆盖setter和getter时,需要手动进行@synthesize,不会自动完成。所以,在你合成它之前,_text 是不存在的。
-
编译器意味着您正在使用未声明的标识符。 _text 未声明。如果你同时实现 getter 和 setter,编译器不会为你声明实例变量,你必须自己做。那是因为通常您不需要实例变量。为什么这里需要一个?
标签: ios objective-c compiler-construction setter undeclared-identifier