→ zonble:retain 是原來指標指向的物件被標記多使用了一次 05/06 11:45
→ zonble:copy 會產生新物件 05/06 11:45
→ wfgh:但產生新物件 為何他的retainCount不是1而是原來的+1呢? 05/06 11:47
→ zonble:你看的是哪個物件?每個物件可以有不同的 copy 實作 05/06 11:58
→ zonble:而且通常大部分是沒有實作 copy 的,一個物件要可以 copy 05/06 11:59
→ zonble:需要另外實作 copyWithZone: 05/06 11:59
→ wfgh:我用的是NSDictionary 05/06 12:03
→ wfgh:所以沒有實作的意思就是他跟retain功能相同嗎? 05/06 12:03
→ zonble:不是,如果一個物件沒有實作 copyWithZone:,一呼叫 copy 05/06 12:04
→ zonble:就會馬上 crash。 05/06 12:05
→ zonble:immutable 的物件有時候 copy 不見得會產生新物件 05/06 12:05
→ wfgh:那我用[dictionary copy]為何他的ratainCopy會加1呢? 05/06 12:05
→ zonble:因為多生一個物件的意義往往不大 05/06 12:06
→ zonble:可能是 NSDictionary 把 copy 的實作成 retain,Foundation 05/06 12:07
→ zonble:的一些實作經常改來改去。你可以試試看 copy 一個 05/06 12:07
→ zonble:NSMutableDictionary 看看,可能就會出現不同的結果。 05/06 12:07
推 offname:有些 immutable (array, dict)的 copy 和 retain ,沒差別 05/06 13:58
→ offname:反正照著規矩來 retain-release, copy-release 就是了 05/06 14:03