国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

IOS property屬性詳細介紹使用注意事項

2020-07-26 02:55:07
字體:
來源:轉載
供稿:網友

IOS property屬性

原子性

  • atomic
  • nonatomic

訪問權限

  • readWrite
  • readOnly

內存管理

  • strong
  • retain
  • copy
  • assign
  • weak
  • unsafe_unretained

方法命名

  • getter = <name>
  • setter = <name>

結論

1、原子性

     (1)atomic

               原子性,可以理解成就是生成getter、setter方法時,編譯器會自動為程序添加同步鎖,減少因為在不同的線程中同時對同一個內存地址進行讀寫操作,而產生的二意性、數據混亂的情況。

               但同步鎖也不能一定保證能完全阻止同時讀寫的情況發生,而且同步鎖會耗費較多資源,降低程序的效率,因此不建議使用,但atomic是默認的特性。

     (2)nonatomic

               非原子性,也就是不添加同步鎖,讀寫效率會高,但需要開發人員注意同時讀寫的情況,可以使用gcd的欄柵和同步方法來保證。

2、訪問權限

     (1)readWrite

               生成getter、setter方法,并生成實例變量指針,但對于靜態庫類是無法修改的,所以即使能進入頭文件也無法修改。

     (2)readOnly

               只生成getter方法,可以用于數據保護,在interface中把屬性聲明了readOnly,在continue-class中再把屬性聲明為readWrite,就能實現私有屬性的效果,從而有更好的封裝特性,但其實通過KVC

               依然可以從外部修改屬性,但不建議這樣使用。

3、內存管理

     (1)strong:strong是推出ARC自動計數后后添加的屬性,效果與retain基本一致,都是在setter方法中,對舊數值release,對新數值retain。
     (2)retain與strong基本一致
     (3)assign:簡單賦值操作,通常針對普通類型,既不release,也不retain
     (4)copy:能更好實現上下文環境保護。對舊值release,對新值進行copy操作,immutable+copy = 不可變淺復制,mutable+copy = 不可變深復制。
     (5)weak:weak特性,并不會持有對象,當指向對象的指針全撤銷后,對象釋放,指針置nil,這常用于block的保留環
     (6)unsafe_unretained:不會持有對象,但引用對象,對象釋放后,會產生野指針,主要用于兼容以前的方法。

4、方法命名

     (1)getter = <name>

                屬性生成的默認getter方法名:屬性名

     (2)setter = <name>

               屬性生成的默認getter方法名:set+屬性名

5、結論

     屬性不是隨便填寫的,需要嚴格根據該屬性在程序中的作用,再選擇。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敖汉旗| 达拉特旗| 景德镇市| 河东区| 长乐市| 张家界市| 华池县| 昌宁县| 古丈县| 镇远县| 广西| 尼木县| 阿坝县| 泗阳县| 八宿县| 思茅市| 临西县| 绥宁县| 遂宁市| 壤塘县| 东阿县| 府谷县| 清涧县| 金乡县| 鹤峰县| 陆良县| 鄢陵县| 新乐市| 宣武区| 同德县| 襄樊市| 曲麻莱县| 孝昌县| 龙岩市| 比如县| 昌都县| 从化市| 驻马店市| 普格县| 高唐县| 油尖旺区|