一個實例在我的iPhone應用程序編譯時,我經常這樣做在Xcode V3.2.3:應該得到20個錯誤......但得到0 ...不聲明變量
- 在聲明一個布爾變量* .h文件
- 在同一個* .h文件中使用@property。
- 在匹配的* .m文件中使用@sythesize。
我不小心忘了做#1 ......但它仍然很好。 0警告。 0錯誤。 0分析儀錯誤。
這怎麼可能?我的代碼不應該加載與編譯器錯誤無處不在變量正試圖使用?
一個實例在我的iPhone應用程序編譯時,我經常這樣做在Xcode V3.2.3:應該得到20個錯誤......但得到0 ...不聲明變量
我不小心忘了做#1 ......但它仍然很好。 0警告。 0錯誤。 0分析儀錯誤。
這怎麼可能?我的代碼不應該加載與編譯器錯誤無處不在變量正試圖使用?
這是新運行時的一項功能。有關更多詳細信息,請參閱this question。
實例變量(ivars)的自動合成是OS X上的Objective-C 2.0運行時和新的iOS Objective-C運行時的一項功能。 @synthesize指令將在運行時自動創建必要的ivar,除非您自己聲明瞭它。 Objective-C 2.0的非易碎伊娃支持使這成爲可能。因此,沒有錯誤,你不應該接收它們。
最終,您不必在類的接口中聲明ivars是件好事。它們(可能)是特定於實現的細節,您不希望它們作爲該類的公共接口的一部分顯示。請注意,使用類別類別也可以自動綜合ivars以獲得「私人」屬性。
感謝您的快速回復。有沒有辦法讓我爲這些類型的問題強行發出警告/錯誤? (我想看看他們。) – Annette 2010-07-12 18:08:53
你爲什麼想看到他們?編譯器正在爲您創建它們。 – 2010-07-12 18:13:13
@Annette - 正如Jeff所說,不需要警告,因爲在現代運行時中沒有爲屬性聲明實例變量沒有任何問題。 – 2010-07-13 02:16:21