Strong和Copy的區(qū)別

Strong和Copy對于NSString秘血、NSDirectory、NSArray的區(qū)別

當(dāng)NSString、NSDirectory咒精、NSArray在聲明屬性的時候設(shè)置為Strong類型時:

(1) 調(diào)用set方法賦值

@property (nonatomic, strong) NSString *str;

@property (nonatomic, strong) NSArray *array;

@property (nonatomic, strong) NSDictionary *dic;

 NSMutableString *mustr = [[NSMutableString alloc]initWithFormat:@"123"];
    self.str = mustr;
    NSLog(@"%@",_str);
    [mustr appendString:@"456"];
    NSLog(@"%@",_str);
    
    NSMutableArray *muarray = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil];
    self.array = muarray;
    NSLog(@"%@",_array);
    [muarray addObject:@"d"];
    NSLog(@"%@",_array);
    
    NSMutableDictionary *muDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"a",@"1",@"b",@"2",nil];
    self.dic = muDic;
    NSLog(@"%@",_dic);
    [muDic setObject:@"3" forKey:@"c"];
    NSLog(@"%@",_dic);

輸出結(jié)果:

屏幕快照 2017-02-23 17.40.33.png

(2)直接對實(shí)例對象賦值

@property (nonatomic, strong) NSString *str;

@property (nonatomic, strong) NSArray *array;

@property (nonatomic, strong) NSDictionary *dic;

NSMutableString *mustr = [[NSMutableString alloc]initWithFormat:@"123"];
    _str = mustr;
    NSLog(@"%@",_str);
    [mustr appendString:@"456"];
    NSLog(@"%@",_str);
    
    NSMutableArray *muarray = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil];
    _array = muarray;
    NSLog(@"%@",_array);
    [muarray addObject:@"d"];
    NSLog(@"%@",_array);
    
    NSMutableDictionary *muDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"a",@"1",@"b",@"2",nil];
    _dic = muDic;
    NSLog(@"%@",_dic);
    [muDic setObject:@"3" forKey:@"c"];
    NSLog(@"%@",_dic);

輸出結(jié)果:

屏幕快照 2017-02-23 17.47.13.png

結(jié)論:當(dāng)把NSString密末、NSDirectory握爷、NSArray聲明為strong,那么如果原對象的值發(fā)生變化严里,會影響到當(dāng)前對象的值,不管當(dāng)前對象是調(diào)用點(diǎn)語法賦值還是直接對實(shí)例對象賦值新啼。

當(dāng)NSString、NSDirectory刹碾、NSArray在聲明屬性的時候設(shè)置為Copy類型時:

(1)調(diào)用set方法賦值

@property (nonatomic, copy) NSString *str;

@property (nonatomic, copy) NSArray *array;

@property (nonatomic, copy) NSDictionary *dic;

  self.str = mustr;
    NSLog(@"%@",_str);
    [mustr appendString:@"456"];
    NSLog(@"%@",_str);
    
    NSMutableArray *muarray = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil];
    self.array = muarray;
    NSLog(@"%@",_array);
    [muarray addObject:@"d"];
    NSLog(@"%@",_array);
    
    NSMutableDictionary *muDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"a",@"1",@"b",@"2",nil];
    self.dic = muDic;
    NSLog(@"%@",_dic);
    [muDic setObject:@"3" forKey:@"c"];
    NSLog(@"%@",_dic);

輸出結(jié)果:

屏幕快照 2017-02-23 18.08.58.png

(2)直接對實(shí)例對象賦值

@property (nonatomic, copy) NSString *str;

@property (nonatomic, copy) NSArray *array;

@property (nonatomic, copy) NSDictionary *dic;

NSMutableString *mustr = [[NSMutableString alloc]initWithFormat:@"123"];
  _str = mustr;
  NSLog(@"%@",_str);
  [mustr appendString:@"456"];
  NSLog(@"%@",_str);
  
  NSMutableArray *muarray = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil];
  _array = muarray;
  NSLog(@"%@",_array);
  [muarray addObject:@"d"];
  NSLog(@"%@",_array);
  
  NSMutableDictionary *muDic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"a",@"1",@"b",@"2",nil];
  _dic = muDic;
  NSLog(@"%@",_dic);
  [muDic setObject:@"3" forKey:@"c"];
  NSLog(@"%@",_dic);

當(dāng)設(shè)置為Copy屬性時燥撞,如果調(diào)用點(diǎn)語法賦值,當(dāng)前對象不會因?yàn)樵瓕ο蟮母淖兌淖兠灾模侨绻侵苯淤x值物舒,那么原對象改變那么當(dāng)前對象也會改變。

總結(jié):當(dāng)對NSString這種有可變子類的對象直接賦值時戏锹,不管聲明屬性時聲明的是copy還是strong,現(xiàn)對象的值都會隨著原對象的值而改變冠胯。當(dāng)調(diào)用set方法賦值時,如果對象聲明的是copy那么現(xiàn)有對象不會因?yàn)樵瓕ο蟮母淖兌淖兙坝茫绻暶鞯氖莝trong涵叮,那么現(xiàn)有對象會因?yàn)樵瓕ο蟮母淖兌淖儭?/p>

個人理解:聲明為strong時,其實(shí)只是把當(dāng)前對象的指針指向了原有對象的地址伞插,因此當(dāng)原有對象改變時割粮,現(xiàn)有對象也會改變。直接賦值也應(yīng)該是這樣媚污。當(dāng)聲明為Copy時舀瓢,其實(shí)是把原有對象復(fù)制了一份,然后讓現(xiàn)有對象的指針指向復(fù)制的這一份耗美。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末京髓,一起剝皮案震驚了整個濱河市航缀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堰怨,老刑警劉巖芥玉,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異备图,居然都是意外死亡灿巧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門揽涮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抠藕,“玉大人,你說我怎么就攤上這事蒋困《芩疲” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵雪标,是天一觀的道長零院。 經(jīng)常有香客問我,道長汰聋,這世上最難降的妖魔是什么门粪? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮烹困,結(jié)果婚禮上玄妈,老公的妹妹穿的比我還像新娘。我一直安慰自己髓梅,他們只是感情好拟蜻,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枯饿,像睡著了一般酝锅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奢方,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天搔扁,我揣著相機(jī)與錄音,去河邊找鬼蟋字。 笑死稿蹲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鹊奖。 我是一名探鬼主播苛聘,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了设哗?” 一聲冷哼從身側(cè)響起唱捣,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎网梢,沒想到半個月后震缭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澎粟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年蛀序,在試婚紗的時候發(fā)現(xiàn)自己被綠了欢瞪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片活烙。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖遣鼓,靈堂內(nèi)的尸體忽然破棺而出啸盏,到底是詐尸還是另有隱情,我是刑警寧澤骑祟,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布回懦,位于F島的核電站,受9級特大地震影響次企,放射性物質(zhì)發(fā)生泄漏怯晕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一缸棵、第九天 我趴在偏房一處隱蔽的房頂上張望舟茶。 院中可真熱鬧,春花似錦堵第、人聲如沸吧凉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阀捅。三九已至,卻和暖如春针余,著一層夾襖步出監(jiān)牢的瞬間饲鄙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工圆雁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忍级,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓摸柄,卻偏偏與公主長得像颤练,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 如圖嗦玖,不可變 string 從圖中打印來看患雇,并無不同 如圖,可變 string 的打印宇挫,copyString的地址...
    記憶岸閱讀 596評論 1 2
  • 在定義一個類的property時候苛吱,為property選擇strong還是copy特別注意和研究明白的,如果pro...
    Amok校長閱讀 1,012評論 0 0
  • 之前在開發(fā)的過程中器瘪,對定義類的屬性用stong還是copy總是有一點(diǎn)迷惑翠储,現(xiàn)在結(jié)合代碼來鞏固一下認(rèn)知。定一一個Pe...
    wjam小濤濤閱讀 710評論 0 0
  • 在定義一個類的property時候橡疼,為property選擇strong還是copy特別注意和研究明白的援所,如果pro...
    Dr_zhang閱讀 189評論 0 1
  • 那個周末 陽光明媚如初 朋友載上我 漫無目的轉(zhuǎn)悠 遠(yuǎn)處 一片緋紅 吸引了我們的視線 朋友知道我的“好色” 穩(wěn)穩(wěn)地停...
    蒹葭蒼蒼123閱讀 385評論 6 4