IOS開的property要點總結

在.h文件裏面聲明@property和在m類實現文件裏央使用@synthesize用於隱性實現對類成員變量的讀取。
property涉及到的屬性值包括:atomic,nonatomic,readonly,readwrite,assign,retain,copy,getter,setter,另外還有強引用strong和弱引用weak.都是對成員訪問和修改進行限制
下面對屬性使用進行簡要概括:
atomic和nonatomic是原子操作,也就是對該元素的操作使用atomic可以理解爲信號量訪問機制,且資源只有一個,訪問速度較慢。使用nonatomic是多線程同時訪問一個數據量,提高訪問速度,但是不安全,兩者不可並用。atomic爲默認的處理方式
readonly定義成員變量後,只能對該變量進行讀操作,適合用於較爲固定的數據值 。readwrite可讀可寫。readwite爲默認的處理方式。
assign,retain,copy爲對對象不同的處理方式:assign爲默認的處理方式,assign關鍵字代表setter直接賦值,而不是複製或者保留它,更不需要進行引用計數。這種機制非常適合一些基本數據類型,比如NSInteger和CGFloat,或者你並不直接擁有的類型,比如delegates.
copy與retain的具體區別爲:copy其實是建立了一個相同的對象,而retain只是保存其對象,並且其計數值+1。也就是說下個是複製變量創建一個新的變量,而另一個只是指針引用,後者適用於一般對象引用,而前者適用於特殊,比如NString,string.默認屬性爲automic,assign.reain強調的是引用,而copy的效果是在另一個地址重新創那一個新的相同對象。
weak與strong可以理解爲一個是強鏈接,一個是弱鏈接,相當於一個是Linux下面的硬連接,而另一個只是個快捷方式。強連接保存對對象的持有,弱連接只是個簡單的引用,最重要的一點就是強鏈接所指對象被刪除後,若之前有弱連接指向該對像,則現在引用爲空。
還有一點要強調的是對於同一個對象如果既有property定義屬性,同時又有對於該對象的get或set方法,最後以set或get方法爲準。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章