[英]Weak/Strong Annotations for Non-Synthesized Properties in Objective-C
從Objective-C 2.0開始,我們有了一個屬性 ,一個很好的語法來獲取和設置實例變量的值。 由於Clang 3.1所有非動態的屬性,不具有顯式getter的readonly或沒有自定義getter和setter,都會自動合成到ivars。 而且,由於ARC,我們對屬性使用弱/強注釋 ,ARC使用這些屬性來定義自動合成屬性的內存管理邏輯 。
例如,屬性仍然可以手動合成,例如用於由ivar支持的只讀屬性並返回默認值。
有時,如果它們根本不合成,那么它們也很有用。 當我使用這種行為時,我發現了一些用例:
NSManagedObject
子NSManagedObject
。 問題:根據實際使用情況,用弱/強注釋這些非合成屬性是否有意義? 什么是最佳做法?
我會說答案是肯定的 ,即使只是為了記錄。
即使您不使用任何與編譯器和框架相關的默認實現,並自己實現所有內容,如果能夠獲得有關內存的提示,那么嘗試使用這些屬性的人將更好地理解API。管理會表現出來。 一個人並不真的必須知道如何在內部實現setter或getter,但他可能必須知道,例如,如果在調用setter之后,該值被復制或保留或僅被分配,並實現他的一面相應的事情。
是的,它確實。
屬性定義是合同規范。 僅僅因為編譯器沒有履行合同並不意味着你在手動實現訪問器方法時不應該尊重它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.