国产探花免费观看_亚洲丰满少妇自慰呻吟_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,定義時靜態分配一段內存。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 聂荣县| 柞水县| 昌吉市| 桓台县| 永城市| 桃园县| 阜城县| 永年县| 贵港市| 上林县| 廉江市| 麻城市| 靖远县| 桂林市| 和平县| 永定县| 宿松县| 宁海县| 万年县| 日照市| 石景山区| 新乐市| 武汉市| 张家界市| 黑河市| 深泽县| 峨眉山市| 瓦房店市| 大港区| 屏东市| 四会市| 泸定县| 白水县| 陕西省| 句容市| 民乐县| 格尔木市| 驻马店市| 如东县| 南宁市| 清水县|