<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      iOS copy 和 mutableCopy 學習

      (參考 iOS 52個技巧學習心得筆記 第二章 對象 , 消息, 運行期)的對象部分

      關于Copy  有個經典問題”大部分的時候NSString的屬性都是copy,那copy與strong的情況下到底有什么區別呢” 或者說”為什么 NSString 類型成員變量的修飾屬性用 copy 而不是 strong (或 retain ) ?”

      明顯 第一句比第二句 嚴謹多了.

      @property (strong,nonatomic) NSString *strongString; & @property (copy,nonatomic) NSString *copyString;

      正確理解 應該是區分這兩種表達方式的區別

      不同寫法,權限 不同 安全級別不同.

      (1)如果是 一個 普通NSString 賦值給copyString 和 strongString  沒區別,  copy 是淺拷貝, 對于二者的被賦值 都是指針引用

      (2)如果是一個可變字符串NSMutableString 賦給copyString 和 strongString ,對于copyString則是深復制 不會跟著源頭的變化而變化.而strongString 還是淺復制 是指針引用 會隨著源頭的變化而變化

       

      其二,copy 和 mutableCopy

      copy 是淺復制 , 簡單指針引用,隨源頭的變化而變化 

      multableCopy 是深復制,是創建了一個新的對象,不會隨著源頭變化而變化

      以下 是一位網友得到的 的Runtime源碼中NSMutableString.m實例方法
      
      -(id)copy {
          return [[NSString alloc] initWithString:self];
      }
        -(id)copyWithZone:(NSZone*)zone {
          return [[NSString allocWithZone:zone] initWithString:self];
      }
      對于 NSObject.mm方法
      
      - (id)copy {
          return [(id)self copyWithZone:nil];
      }
      - (id)mutableCopy {
          return [(id)self mutableCopyWithZone:nil];
      }
      
      NSString.m調用
      
      - (id)copyWithZone:(NSZone *)zone {
         if (NSStringClass == Nil)
              NSStringClass = [NSString class];
          return RETAIN(self); 
      }
      - (id)mutableCopyWithZone:(NSZone*)zone {
      
          return [[NSMutableString allocWithZone:zone] initWithString:self];
      }

      由此可見 在可變類型中 copy也是深復制,但是類型變成了 普通類型,不能再增加或者減少集合元素了 

      在普通類型中 使用mutableCopy 也是深復制,類型變成了 可變類型...

       

      NSString *haha = @"hahahhahahah";
      NSLog(@"%p\n%p",haha,[haha mutableCopy]);

      2016-08-15 17:42:09.843 dailylife[69904:5024325] 0x10f6fa390

      0x7f8079c41f80

      Printing description of haha:

      hahahhahahah

      Printing description of haha:

      hahahhahahah

      Printing description of haha:

      (NSMutableString) NSMutableString = {

        NSString = {

          NSObject = {

            isa = __NSCFConstantString

          }

        }

      }

       

       

       

      同理:NSString  NSArray NSDictionary  

       

       

      參考:

      https://searchcode.com/file/68838008/jni%20w:%20itoa%20runtime%20and%20allocator/Foundation/NSMutableString.m

      http://ios.jobbole.com/87987/

       

      posted on 2016-08-15 17:14  ACM_Someone like you  閱讀(336)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 亚洲熟妇自偷自拍另亚洲| 成年女人免费碰碰视频| 日韩高清亚洲日韩精品一区二区| jizz国产免费观看| 久久综合色天天久久综合图片 | 亚洲色拍拍噜噜噜最新网站| 亚洲av综合色一区二区| 色一乱一伦一图一区二区精品| 国内不卡不区二区三区| gogogo高清在线播放免费| 免费无码成人AV片在线| 嘉定区| 亚洲国产亚洲综合在线尤物| 国产精品点击进入在线影院高清 | 蜜臀91精品国产高清在线| 亚洲av永久无码精品成人| 在线播放深夜精品三级| 在线看国产精品自拍内射| 日韩内射美女人妻一区二区三区| 精品国产综合成人亚洲区| 欧美熟妇乱子伦XX视频| 久久精品无码免费不卡| 久久久久成人片免费观看蜜芽| 日韩免费码中文在线观看| 中文字幕无码av不卡一区| 赤水市| av在线播放日韩亚洲欧| 免费无码VA一区二区三区| 深夜视频国产在线观看| 自拍偷区亚洲综合第二区| 狠狠躁夜夜躁无码中文字幕| 亚洲 日韩 国产 制服 在线| 无码日韩做暖暖大全免费不卡| 日日躁夜夜躁狠狠久久av| 久久一日本道色综合久久| 丰满爆乳一区二区三区| 高邮市| 欧洲无码一区二区三区在线观看| 亚洲欧美在线综合一区二区三区| 精品国产成人a在线观看| 国产精品熟女一区二区不卡|