例如,如果我有一個屬性index
和ivar _index
,使用self.index
,[self index]
和[self setIndex:]
的速度是否更慢?正通過「自我」訪問屬性。畢竟比直接訪問伊娃更慢?
2
A
回答
3
使用訪問器會產生開銷,至少是方法調用。
這就是說,猜測和證明是不同的東西。開銷可能很大,或者不是。在任何情況下,分析應用程序都會顯示CPU時間花費的位置以及應優化的內容。我嚴重懷疑使用訪問器而不是直接訪問器會影響任何應用程序訪問點應避免。
原子和複製屬性會慢得多,這些選擇會產生更大的影響,應該更仔細地考慮。適當時使用它們。
但答案是在分析你的應用程序。
編輯:
存取器有很多好處:封裝,客戶,派生類和類自身之間代碼的一致性,覆蓋,調試屬性訪問需要的時候,只讀訪問檢查...充足的理由支付一個小的性能價格。所有好的理由都不夠好。 ;)
如果訪問器成爲問題,我會說一個Objective-C類可能不是該工作的合適選擇。一個C++類有更多的機會是快速的:非虛擬方法,內聯方法,基於堆棧的實例...
+1
用於分析。相比於最簡單的繪圖,這種差異很可能是微不足道的。 – jrturton
相關問題
- 1. 屬性語法,我是直接訪問伊娃還是經過getter/setter?
- 2. 目標C - 使用屬性get訪問VS直接使用伊娃
- 3. 轉發屬性訪問器到伊娃的方法
- 4. 爲什麼我不能訪問自動合成的伊娃?
- 5. 更直接的屬性訪問比定義的API更「pythonic」
- 6. 直接訪問類屬性比通過getter函數獲取值更快嗎?
- 7. RoR:訪問:通過屬性
- 8. 通過jquery訪問自定義屬性
- 9. 通過接口轉換訪問屬性
- 10. 如何通過數據集屬性訪問元素直接
- 11. 直接訪問struct-within-struct的屬性?
- 12. JSP EL可以直接訪問屬性
- 13. Laravel,如何直接訪問屬性
- 14. 直接訪問對象屬性thymeleaf
- 15. 通過伊娃槽NSNotificationCenter
- 16. 通過Twitter API訪問直接消息
- 17. 通過url直接訪問區域
- 18. 通過JavaScript直接訪問MongoDB
- 19. 防止通過.htaccess直接訪問robots.txt
- 20. 通過屬性遞歸訪問字典以及索引訪問?
- 21. 自我分配之間的區別。和伊娃分配直接
- 22. 如何通過反射訪問屬性?
- 23. 通過bbUI訪問BB屬性
- 24. 通過javascript訪問id屬性
- 25. 的has_many通過 - 訪問屬性
- 26. 通過UI設置/訪問Application.CutCopyMode屬性
- 27. 如何通過ApplicationContext訪問屬性
- 28. 通過PHP訪問文件屬性
- 29. 通過變量訪問對象屬性
- 30. Sling - 通過pageContext訪問屬性
是的,幾個數量級。 –
不要忽視正在發生的事情的基本速度。除非你處於緊張的環境中,否則任何差異都可能是微不足道的。 – willc2