遇到一些问题。
这是我第一次真正处理AppDelegate.h / .m文件。
我在AppDelegate.h中声明了一个属性@property float centerFreq
。然后我在AppDelegate.m中合成它,如下所示:@synthesize centerFreq = _centerFreq
。但是,当我稍后尝试在AppDelegate.m中实际使用centerFreq
时,我收到错误“使用未声明的标识符'centerFreq'”。我不明白为什么我不能在我的.m文件中的任何地方使用这个变量。
答案 0 :(得分:1)
foo = self.centerFreq
将调用自动创建的getter。相当于foo = [self centerFreq]
。 _centerFreq
将直接访问实例变量(iVar)。通常,如果您创建了@property
,则要使用访问方法centerFreq
和setCenterFreq
,如果您使用self.centerFreq
作为lvar或rvar,则会调用这些方法分配操作。 (self.centerFreq = foo
调用[self setCenterFreq:foo]
)。
@synthesize centerFreq = _centerFreq
实现了getter和setter方法,否则 @property
是不必要的,因为_centerFreq是支持iVar的默认名称。如果你想为iVar选择一个不同的名字,那么@synthesize会很有用。