2012-03-28 50 views
4

我知道屬性封裝了getter和setter方法。所以,只要我們說 myObject.property1,我們實際上會調用[myObject property1]。從Apple文檔,Stanford iOS課程和示例代碼中,我可以看到鼓勵使用屬性。我認爲使用屬性使代碼看起來更好,更易於理解,但性能又如何?如果我寫一個巨大的應用程序,使用屬性會對性能產生怎樣的影響?專業人士通常更喜歡直接二傳手和吸氣方法還是屬性?iOS - 直接使用getter/setter方法還是屬性更好

+0

我的問題很清楚:使用點符號(myObject.property1)和直接getter/setter調用([myObject property1])之間是否存在性能差異?這與@synthesize沒有關係。 – 2012-03-28 12:12:02

回答

3

使用括號表示法([myObject property1])或.表示法(myObject.property1)時,性能沒有差異。

這是一種比其他任何事情都更加的編碼風格,所以如果你不單獨工作,那麼使用你喜歡的符號或者與你的團隊相同的符號。

+0

你說這兩種風格之間沒有性能差異。我實際上熱愛物業。隨着最近XCode版本的推出,使用它們非常容易,因爲XCode將分享一半的代碼。但它有點奇怪,它沒有任何區別,我的意思是不需要更長的時間,因爲它首先必須將這些屬性轉換爲getter/setter方法?或者在編譯時請翻譯這個翻譯嗎?如果真的那麼瞧。 – 2012-03-28 11:54:20

+1

他們編譯到相同的東西,所以沒有性能差異。 – sch 2012-03-28 11:58:10

2

屬性可能會更好,因爲它們會自動爲您生成的方法,當你合成它們,你可以做這樣的:

@synthesize property = _property 

爲了避免混淆

你也可以選擇不同的功能/類似的方法:

  (nonatomic, retain) // or (readonly) etc. 

它還處理內存更好

+0

但如果你有同樣的類許多屬性,你想使不妨做返回的方法... – MCKapur 2012-03-28 11:44:59

1

屬性絕對是首選。順便說一句,這是@synthesize聲明,它自動生成getter和setter。我不知道哪些報告會證實與setter/getters的性能變化。

+0

錯了。關鍵問題是關於性能。所有其他評論都是外圍的。我正在處理這個問題。 – Mundi 2012-03-28 11:56:57

1

屬性語法直接轉換爲getter/setter調用。我不知道需要更長的時間來編譯或者如果有差異,但是程序運行時代碼執行是相同的。

相關問題