當前位置:編程學習大全網 - 行動軟體 - NSString屬性什麽時候用copy,什麽時候用strong

NSString屬性什麽時候用copy,什麽時候用strong

NSString壹般建議用copy,這樣再更改數據不影響原來的賦值,

NSMutableString *mStr = [NSMutableStringstringWithFormat:@"abc"];

假如,mStr對象的地址為0x11,也就是0x11是@“abc”的首地址,mStr變量自身在內存中的地址為0x123;

當把mStr賦值給retain的rStr時,rStr對象的地址為0x11,rStr變量自身在內存中的地址為0x124;rStr與mStr指向同樣的地址,他們指向的是同壹個對象@“abc”,這個對象的地址為0x11,所以他們的值是壹樣的。

當把mStr賦值給copy的cStr時,cStr對象的地址為0x22,cStr變量自身在內存中的地址0x125;cStr與mStr指向的地址是不壹樣的,他們指向的是不同的對象,所以copy是深復制,壹個新的對象,這個對象的地址為0x22,值為@“abc”。

如果現在改變mStr的值:

[mStr appendString:@"de"];

NSLog(@"retainStr:%@", _rStr);

NSLog(@"copyStr:%@", _cStr);

結果,

使用retain的字串rStr的值:@"abcde",

而使用copy的字串cStr的值:@"abc",

所以,如果壹般情況下,我們都不希望字串的值跟著mStr變化,所以我們壹般用copy來設置string的屬性。

如果希望字串的值跟著賦值的字串的值變化,可以使用strong,retain。

希望可以幫到妳。

  • 上一篇:j介紹壹個電影網站,輸入導演或者演員的名字,能出現他的介紹和壹些電影圖片
  • 下一篇:七龍珠z哪集開始打布偶
  • copyright 2024編程學習大全網