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

首頁 > 學院 > 開發設計 > 正文

IOS中Retain和Copy的區別

2019-11-14 19:50:28
字體:
來源:轉載
供稿:網友

1 ,可讀性: readonly  、 readwrite
@PRoperty(readwrite,....) valueType value;
這個屬性是變量的默認屬性,就是如果你 (readwrite and readonly 都沒有使用,那么你的變量就是 readwrite 屬性 ) ,通過加入 readwrite 屬性你的變量就會有 get 方法,和 set 方法。
property(readonly,...) valueType value;
這個屬性變量就是表明變量只有可讀方法,也就是說,你只能使用它的 get 方法。
2 , assign , setter 方法直接賦值,不進行任何 retain 操作,為了解決原類型與環循引用問題
3 , retain , setter 方法對參數進行 release 舊值再 retain 新值,所有實現都是這個順序
4 , copy , setter 方法進行 Copy 操作,與 retain 處理流程一樣,先舊值 release ,再 Copy 出新的對象, retainCount 為 1 。這是為了減少對上下文的依賴而引入的機制。
5 , nonatomic ,非原子性訪問,不加同步,多線程并發訪問會提高性能。
注意,如果不加此屬性,則默認是兩個訪問方法都為原子型事務訪問。鎖被加到所屬對象實例級 。 所以   不加 nonatomic 對與多線程是安全的   。
附網文:
Retain vs. Copy
copy  :   建立一個索引計數為 1 的對象,然后釋放舊對象
retain  :釋放舊的對象,將舊對象的值賦予輸入對象,再提高輸入對象的索引計數為 1
那上面的是什么該死的意思呢?
Copy 其實是建立了一個相同的對象,而 retain 不是:
比如一個 NSString  對象,地址為 0×1111  ,內容為 @”STR”
Copy  到另外一個 NSString  之后,地址為 0×2222  ,內容相同,新的對象 retain 為 1  ,舊有對象沒有變化
retain  到另外一個 NSString  之后,地址相同(建立一個指針,指針拷貝),內容當然相同,這個對象的 retain 值 +1
也就是說, retain  是指針拷貝, copy  是內容拷貝。
注:NSString 類舉例是錯誤的。NSString沒有retain,定義時靜態分配一段內存。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉林市| 丰宁| 岳池县| 克山县| 方山县| 兴隆县| 宜黄县| 拜城县| 赤城县| 巴马| 沈阳市| 法库县| 达日县| 云南省| 申扎县| 定南县| 偏关县| 池州市| 裕民县| 舒城县| 西峡县| 葵青区| 靖安县| 泸州市| 伊宁市| 盐城市| 平江县| 怀集县| 罗江县| 五莲县| 长海县| 荔波县| 宾川县| 邵东县| 永康市| 雅安市| 耒阳市| 仪征市| 清河县| 神池县| 左贡县|