OC學習小結之copy語法

2021-06-29 07:03:25 字數 858 閱讀 8359

乙個物件使用copy和mutablecopy方法可以建立物件的副本

copy:需要事先實現nscopying協議,建立的副本是不可變副本(如nsstring,nsarray,nsdictionary)

mutablecopy :需要先實現nsmutablecopying協議,建立的是可變副本(如nsmutablestring,nsmutablearray,nsmutabledictionary)

深複製:內容拷貝,源物件和副本指向的是不同的兩個物件。源物件引用計數器不變,副本計數器設定為1

淺複製:指標拷貝,源物件和副本指向的是同乙個物件。物件的引用計數器+1,其實相當於做了一次retain操作

這其中,只有當nnstring使用copy方式複製時為淺拷貝,其他均為深拷貝。

nsstring *string = [[nsstring alloc] initwithformat:@"測試淺拷貝"];

nslog(@"%zi", [string retaincount]);

nsstring *str = [string copy];

nslog(@"%zi", [string retaincount]);

nslog(@"%@", str);

[str release];

[string release];

測試結果

2013 12 OC新語法小結

1.方法與順序無關 2.列舉繫結資料型別 enum typedef nsuinteger language 3.屬性不用寫 synthesize 4.語法簡化 4.1 nsnumber nsnumber value value 12345 value 123.45f value 123.45 val...

OC學習小結之Foudation 結構體

nsrange location length 表示範圍 nspoint cgpoint 表示座標 nssize cgsize 表示尺寸 nsrect cgrect cgpint cgsize 表示位置和尺寸 中有兩個變數,location 和length 分別表示某個物件串在原物件串的起始位置和長...

OC之點語法詳解

點語法的本質是對set 和get 方法的呼叫 person p person new p.age 10 上面p.age 10不是給person的成員變數age賦值,而是呼叫person中的setage方法,並傳遞引數10,所以p.age 10就相當於 p setage 10 當然也可以根據呼叫per...