Cocoa implements its ownership policy through a mechanism called “reference counting” or “retain counting.” When you create an object, it has a retain count of 1
. When you send an object a retain
message, its retain count is increased by 1
. When you send an object a release
message, its retain count is decreased by 1
(autorelease
causes the retain count to be decremented in the future).
When its retain count drops to 0
, an object’s memory is reclaimed—in Cocoa terminology it is “freed” or “deallocated.” When an object is deallocated, its dealloc
method is invoked automatically. The role of the dealloc
method is to free the object's own memory, and dispose of any resources it holds, including its object instance variables.
If your class has object instance variables, you must implement a dealloc
method that releases them, and then invokes super's implementation. For example, if the Thingamajig class had name
and sprockets
instance variables, you would implement its dealloc
method as follows:
- (void)dealloc |
{ |
[sprockets release]; |
[name release]; |
[super dealloc]; |
} |
You should never invoke another object’s dealloc
method directly.
No comments:
Post a Comment