2014-09-06 93 views
2

遇到一些問題。AppDelegate(iOS)中'使用未聲明的標識符'

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

我已經在AppDelegate.h中聲明瞭屬性@property float centerFreq。然後我在AppDelegate.m中合成它,如下所示:@synthesize centerFreq = _centerFreq。但是,當我嘗試在AppDelegate.m中實際使用centerFreq時,出現錯誤「使用未聲明的標識符'centerFreq'」。我不明白爲什麼我不能在我的.m文件中的任何地方使用這個變量。

+1

這是_centerFreq not centerFreq – WMios 2014-09-06 05:46:31

回答

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是不必要的,除非您已對@property實施了getter和setter方法,因爲_centerFreq是後備iVar的默認名稱。如果你想爲iVar選擇一個不同的名字,那麼@synthesize會很有用。

+0

當我嘗試這樣做時,它說「使用未聲明的標識符self'」。我不認爲我必須在任何地方宣佈自己......我以爲它只是? – 2014-09-06 17:06:01

+0

你的方法聲明可能是C函數格式而不是Objective-C方法格式(你需要一個 - 在實例方法的返回類型之前),或者你可能只是有一些其他的語法錯誤。無法肯定地說沒有代碼。 – stevesliva 2014-09-06 19:14:52

+0

啊,那麼這就是問題所在。該方法是用C語言編寫的。但是,這引起了一個有趣的問題,因爲我使用的是需要在C-中的Core Audio結構,我可能更願意單獨詢問它。感謝您的幫助。 – 2014-09-07 03:28:33