標籤:字串 span col post mutable margin end str 好的
之前都是靠記憶來維持copy和strong 也有問過我 。 我自己說起來才感覺都說不很清楚
通過簡單都代碼來驗證一下 。 有時候花點時間驗證一下才能讓思路更加清晰
NSMutableString * mustr = [NSMutableString stringWithString:@"good"];
self.str = mustr;
self.fuzhiString = mustr;
NSLog(@"self.str is (%@) ==== str,self.fuzhiString is (%@)",self.str,self.fuzhiString);
NSLog(@"self.str *p is (%@) ==== str,self.fuzhiString *p is (%@)",self.str,self.fuzhiString);
注釋:列印結果 == self.str is (good) ==== str,self.fuzhiString is (good)
self.str *p is (0x600000059350) ==== str,self.fuzhiString *p is (0xa000000646f6f674)
[mustr appendString:@"night"];
NSLog(@"self.str is (%@) ==== str,self.fuzhiString is (%@)",self.str,self.fuzhiString);
NSLog(@"self.str *p is (%@) ==== str,self.fuzhiString *p is (%@)",self.str,self.fuzhiString);
注釋:列印結果 ==self.str is (goodnight) ==== str,self.fuzhiString is (good)
self.str *p is (0x600000059350) ==== str,self.fuzhiString *p is (0xa000000646f6f674)
列印結果: copy修飾的屬性為深copy(開闢一個新記憶體指向一個新的值)
strong修飾的屬性為淺copy(跟著mustr的值的改變而改變);
同時表明字串為了防止不經意的修改 應該使用copy,養成好的習慣.
當然用NSString用copy和strong是沒有什麼區別的
關於iOS的深copy和淺copy 以及copy 和 strong 的區別