是否應該使用@property
來訪問經常訪問的變量,例如粒子的位置? @property
爲增加調用方法的開銷的變量創建getter和setter。在大多數情況下,這並不明顯,但如果該屬性每秒訪問次數高達一百萬次(在不同的情況下)呢?何時使用@property?
3
A
回答
4
您說的沒錯,Objective-C運行庫會爲@property
訪問器添加一定數量的開銷。但是,這是在Objective-C類之間共享信息的可接受方式。如果您測量了應用程序並確定開銷實際上是處理瓶頸,那麼您應該只考慮一種不同的方法。
請記住,一個現代化的處理器在GHz的範圍內工作,而出事「每秒一百萬次」只在兆赫範圍。有可能,你的瓶頸將會在別的地方。
如果做有問題,你總是可以做一個更大的Objective-C ParticleCloud
類的內部簡單Particle
結構的陣列上的顆粒加工。這將允許程序的其餘部分忽略Particle
對象的確切實現,同時不需要訪問器@property
。
1
你真的在使用getter和setter嗎?如果沒有,請勿使用財產。如果是這樣,請使用它。要知道開銷是否顯着,唯一的方法是進行自己的性能測試並記錄流程前後的時間,運行完全相同的模擬並比較流逝的時間。如果這是一個性能問題,但可以忽略不計,請不要擔心。你甚至可能發現它比@property更快,而不是你使用的其他方法。
0
在我看來,你應該使用@property
作爲你的對象的屬性。我知道這聽起來很愚蠢,但是通過屬性我的意思是可以被其他類訪問的「公共」屬性。如果只有你的課程需要這個屬性,那麼保持它在你的實現中是私人的,事情會更順暢和更清晰。
@property的好處之一是,你可以指定你是否希望它們是隻讀的(即沒有setter)。所以這是一個公共API的問題。
相關問題
- 1. 何時使用$ this - > $ property
- 2. 何時使用$ this-> property而不是PHP中的$ property
- 3. @property有時不使用
- 4. 如何使用Objective-C @property
- 5. 使用@property和@synthesize時防止泄漏
- 6. 什麼時候應該使用@property?
- 7. 使用@property在ARC
- 8. 使用@property和@synthesise?
- 9. 何時需要@property和@synthesize?
- 10. 使用@property和@synthesize的任何錯誤
- 11. 如何使用@在Python ..和@property和@classmethod
- 12. 使@property私人
- 13. 在ARC上使用@property
- 14. 何時正確使用@ property/@ synthesis,(id)發件人和發佈版
- 15. 我想了解何時使用@property vs實例變量
- 16. 何時何地聲明@property? (Objective-C)
- 17. 使用@property(copy)和@property(retain)的經驗法則是什麼?
- 18. WSO2 - 在Property/Xquery Mediators中使用get-property()函數
- 19. 使用@property將值從一個類傳遞到另一個類使用@property
- 20. 未存儲對該值的引用時應使用何種@property屬性?
- 21. 同時在多個屬性中使用「convert to auto property」
- 22. Java WebStart:<property ...>在使用<extension>時被忽略?
- 23. 使用@property和@synthesize時得到不正確的值
- 24. 在定製getter和setter方法時使用@property
- 25. 什麼時候你必須在iPhone SDK中使用@property和@synthesize?
- 26. 在Apache Camel中使用header,body和property
- 27. 爲什麼在D中使用@property?
- 28. 使用@property ivars的最佳做法
- 29. 爲什麼在PHP中使用{'property'}
- 30. 在標頭中使用@property或@interface