'使用未声明的标识符'在AppDelegate(iOS)

时间:2014-09-06 05:41:52

标签: ios objective-c appdelegate undeclared-identifier

遇到一些问题。

这是我第一次真正处理AppDelegate.h / .m文件。

我在AppDelegate.h中声明了一个属性@property float centerFreq。然后我在AppDelegate.m中合成它,如下所示:@synthesize centerFreq = _centerFreq。但是,当我稍后尝试在AppDelegate.m中实际使用centerFreq时,我收到错误“使用未声明的标识符'centerFreq'”。我不明白为什么我不能在我的.m文件中的任何地方使用这个变量。

1 个答案:

答案 0 :(得分:1)

foo = self.centerFreq将调用自动创建的getter。相当于foo = [self centerFreq]_centerFreq将直接访问实例变量(iVar)。通常,如果您创建了@property,则要使用访问方法centerFreqsetCenterFreq,如果您使用self.centerFreq作为lvar或rvar,则会调用这些方法分配操作。 (self.centerFreq = foo调用[self setCenterFreq:foo])。

除非您同时为@synthesize centerFreq = _centerFreq实现了getter和setter方法,否则

@property是不必要的,因为_centerFreq是支持iVar的默认名称。如果你想为iVar选择一个不同的名字,那么@synthesize会很有用。