內(nèi)存管理-copy

copy分兩種:copy和mutebleCopy

深淺拷貝

深拷貝:內(nèi)容拷貝惕医,生成新的地址
淺拷貝:指針拷貝精肃,不會生成新的地址

1鳞芙、為什么字符串都用copy

@property (copy, nonatomic) NSString *str;

用copy,可以保證字符串一直是不可變的

2腥例、用copy修飾NSMutableArray

@property (copy, nonatomic) NSMutableArray *arr;

copy修飾婚被,數(shù)組會返回不可變數(shù)組稳析,不能add obj,一般用strong

3洗做、mutableCopy只適用于存在Fundation里特定的對象,如表格中的那些彰居,property屬性中不直接使用

image.png

正確使用

NSMutableString *str1 = [NSMutableString stringWithFormat:@"test"];
NSMutableString *str2 = [str1 mutableCopy];

4诚纸、注意NSMutableString初始方式

NSMutableString *str1 = [[NSMutableString alloc] initWithFormat:@"test"]; // 1
NSString *str2 = [str1 copy]; // 深拷貝
NSMutableString *str3 = [str1 mutableCopy]; // 深拷貝
    
[str1 release];
[str2 release];
[str3 release];

但是

NSMutableString *str1 = [NSMutableString stringWithFormat:@"test"];
NSString *str2 = [str1 copy];//淺拷貝
NSMutableString *str3 = [str1 mutableCopy];//深拷貝
[str1 release];//會報錯,因為是淺拷貝陈惰,指針拷貝畦徘,str1,str2指向同一個指針地址抬闯,不能release兩次
[str2 release];
[str3 release];

NSMutableString的初始方式不同
[NSMutableString stringWithFormat:@"test"];相當(dāng)于直接賦值一個字符串
[[NSMutableString alloc] initWithFormat:@"test"]生成了新地址

5井辆、自定義的class類的不能直接使用copy,要使用必須Copy遵守NSCopying協(xié)議,實現(xiàn)-(id)copywithZone:(NSZone*)zone

@interface MJPerson : NSObject <NSCopying>
@property (assign, nonatomic) int age;
@property (assign, nonatomic) double weight;
@end
- (id)copyWithZone:(NSZone *)zone
{
    MJPerson *person = [[MJPerson allocWithZone:zone] init];
    person.age = self.age;
//    person.weight = self.weight;
    return person;
}

- (NSString *)description
{
    return [NSString stringWithFormat:@"age = %d, weight = %f", self.age, self.weight];
}

使用

MJPerson *p1 = [[MJPerson alloc] init];
p1.age = 20;
p1.weight = 50;

MJPerson *p2 = [p1 copy];
p2.age = 30;

NSLog(@"%@", p1);
NSLog(@"%@", p2);

[p2 release];
[p1 release];
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溶握,一起剝皮案震驚了整個濱河市杯缺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌睡榆,老刑警劉巖萍肆,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件袍榆,死亡現(xiàn)場離奇詭異,居然都是意外死亡匾鸥,警方通過查閱死者的電腦和手機蜡塌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勿负,“玉大人馏艾,你說我怎么就攤上這事∨洌” “怎么了琅摩?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锭硼。 經(jīng)常有香客問我房资,道長,這世上最難降的妖魔是什么檀头? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任轰异,我火速辦了婚禮,結(jié)果婚禮上暑始,老公的妹妹穿的比我還像新娘搭独。我一直安慰自己,他們只是感情好廊镜,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布牙肝。 她就那樣靜靜地躺著,像睡著了一般嗤朴。 火紅的嫁衣襯著肌膚如雪配椭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天雹姊,我揣著相機與錄音股缸,去河邊找鬼。 笑死容为,一個胖子當(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
  • 正文 獨居荒郊野嶺守林人離奇死亡沮协,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年龄捡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慷暂。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡聘殖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出行瑞,到底是詐尸還是另有隱情奸腺,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布血久,位于F島的核電站突照,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏氧吐。R本人自食惡果不足惜讹蘑,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望筑舅。 院中可真熱鬧座慰,春花似錦、人聲如沸豁翎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽心剥。三九已至邦尊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間优烧,已是汗流浹背蝉揍。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留畦娄,地道東北人又沾。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像熙卡,于是被迫代替她去往敵國和親杖刷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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

  • 本文源自本人的學(xué)習(xí)記錄整理與理解驳癌,其中參考閱讀了部分優(yōu)秀的博客和書籍滑燃,盡量以通俗簡單的語句轉(zhuǎn)述。引用到的地方如有遺...
    水中的藍天閱讀 377評論 0 3
  • NSString是一個不可變的字符串對象颓鲜。這不是表示這個對象聲明的變量的值不可變表窘,而是表示它初始化以后典予,你不能改變...
    y2015閱讀 169評論 0 0
  • 面試題引發(fā)的思考: Q: 談一談對copy、mutableCopy乐严、淺拷貝瘤袖、深拷貝的理解? copy:不可變拷貝昂验,...
    hazydream閱讀 691評論 1 0
  • Copy的目的 copy的目的捂敌,是希望能產(chǎn)生一個同樣的副本。希望修改副本的時候凛篙,不會影響到原來的數(shù)據(jù)黍匾。修改原來的數(shù)...
    嗯o哼閱讀 323評論 0 1
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭呛梆,有人歡樂有人憂愁锐涯,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,523評論 28 53