最近剛開始學Objective-C剛好碰到Memory Management的問題,網路上有許多教學,我稍微將他們用圖匯整一下:
Objective-C Memory Management:
[retain]
retatin count = 1 retatin count = 2
after b = [ a retain ];
a → □ → a → □
↑
b
[release]
retatin count = 2 retatin count = 1 retatin count = 0
after [ a release ]; after [ a release ];
a → □ → □ → □ auto execute dealloc
↑ ↑
b b
[copy]
a retatin count = 1 a retatin count = 1 b retatin count = 1
after b = [ a copy ];
a → □ → a → □ b → □
[autorelease]
a = [[className alloc] init autorelease];
在autorelease pool中做個標記,若pool要release時,則會把每個已標記的對象release一次,如果某對象retain count > 1,則該對象還是沒有被銷毀。
留言列表