1. 程式人生 > >Copy && MutableCopy

Copy && MutableCopy

div == 可變 nsstring format ring form ews 對象

  • copy :
    • copy出來的對象都是不可變對象
    • 不可變字符串:
      • copy == retain == 指針拷貝
      • 不會分配內存
    • 可變字符串:
      • copy = alloc + 內存拷貝
      • 重新分配內存
      • copy出來的都是不可變對象,所以即使是NSMutableString也不能調用可變對象的方法。強制調用會崩。
  • mutableCopy:
    • 復制出來的都是可變對象
    • 對NSString和NSMutableString都是內存拷貝(深copy)
NSString *string = [[NSString alloc] initWithFormat: @"String"];
NSString 
*newString = [string mutableCopy]; //newString 是 NSMutableString //string是NSString //string的retainCount = 1
  • 名字中帶mutable的無論是NSMutableString 還是mutableCopy都是內容復制(申copy),copy的結果不可變,mutableCopy的結果可變

Copy && MutableCopy