我知道屬性封裝了getter和setter方法。所以,只要我們說 myObject.property1,我們實際上會調用[myObject property1]。從Apple文檔,Stanford iOS課程和示例代碼中,我可以看到鼓勵使用屬性。我認爲使用屬性使代碼看起來更好,更易於理解,但性能又如何?如果我寫一個巨大的應用程序,使用屬性會對性能產生怎樣的影響?專業人士通常更喜歡直接二傳手和吸氣方法還是屬性?iOS - 直接使用getter/setter方法還是屬性更好
回答
使用括號表示法([myObject property1]
)或.
表示法(myObject.property1
)時,性能沒有差異。
這是一種比其他任何事情都更加的編碼風格,所以如果你不單獨工作,那麼使用你喜歡的符號或者與你的團隊相同的符號。
你說這兩種風格之間沒有性能差異。我實際上熱愛物業。隨着最近XCode版本的推出,使用它們非常容易,因爲XCode將分享一半的代碼。但它有點奇怪,它沒有任何區別,我的意思是不需要更長的時間,因爲它首先必須將這些屬性轉換爲getter/setter方法?或者在編譯時請翻譯這個翻譯嗎?如果真的那麼瞧。 – 2012-03-28 11:54:20
他們編譯到相同的東西,所以沒有性能差異。 – sch 2012-03-28 11:58:10
屬性可能會更好,因爲它們會自動爲您生成的方法,當你合成它們,你可以做這樣的:
@synthesize property = _property
爲了避免混淆
你也可以選擇不同的功能/類似的方法:
(nonatomic, retain) // or (readonly) etc.
它還處理內存更好
但如果你有同樣的類許多屬性,你想使不妨做返回的方法... – MCKapur 2012-03-28 11:44:59
屬性絕對是首選。順便說一句,這是@synthesize
聲明,它自動生成getter和setter。我不知道哪些報告會證實與setter/getters的性能變化。
錯了。關鍵問題是關於性能。所有其他評論都是外圍的。我正在處理這個問題。 – Mundi 2012-03-28 11:56:57
屬性語法直接轉換爲getter/setter調用。我不知道需要更長的時間來編譯或者如果有差異,但是程序運行時代碼執行是相同的。
當您使用聲明屬性時,getter和setter會在編譯時生成,因此與自己聲明getter和setter相比,不會影響性能。
- 1. 是short.Parse屬性還是方法?
- 2. 是否直接使用方法或使用Interface Builder編輯屬性?
- 3. 爲什麼使用setter方法,而不是直接在Javascript中更改屬性?
- 4. 使方法暫停,直到另一個屬性準備好
- 5. OO設計:使用屬性還是重載方法?
- 6. 這是更好還是更快的方法?
- 7. PHP - 使用require_once('filename.php')還是require_once'filename.php'更好?
- 8. 從Java調用GnuWin命令還是有更好的方法嗎?
- 9. MVC2 HTML鏈接 - 這是正確的,還是有更好的方法?
- 10. 哪一個性能更好?交叉連接還是新表?
- 11. 更好的Java方法語法?回來早還是晚?
- 12. 在性能方面,哪個更好:foo.setVisibility(View.GONE)還是parent.removeView(foo)?
- 13. 使用類名調用靜態方法 - 好還是壞?
- 14. 使用AngularJS如IFrame直接包含HTML模板是否是最好的方法?
- 15. 班級數據是內部傳遞還是直接訪問更好?
- 16. Model.Is ___ - 它應該是屬性還是方法?
- 17. 方法重載 - 設計好還是壞?
- 18. Java方法返回對象還是直接操作它?
- 19. 更好的方法來提高屬性更改MVVMLight
- 20. 比較.NET參考的屬性更快/更好的方法?
- 21. 擴展方法 - IsNull和IsNotNull,好還是壞使用?
- 22. 這是使用屬性的自我屬性的正確方法?
- 23. 從C++訪問Java類的最佳方法? (比直接使用JNI更好)
- 24. 更改控制器中模型屬性值的更好方法是什麼
- 25. groovy接口方法屬性
- 26. 還原屬性的更改
- 27. 循環通過子類還是有更好的方法嗎?
- 28. C#:類返回值 - 還是有更好的方法嗎?
- 29. 單橋表還是有更好的方法嗎?
- 30. 邏輯錯誤還是有更好的方法?
我的問題很清楚:使用點符號(myObject.property1)和直接getter/setter調用([myObject property1])之間是否存在性能差異?這與@synthesize沒有關係。 – 2012-03-28 12:12:02