Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Properties in dealloc: release then set to nil? or simply release

Tags:

objective-c

I'm new to Objective-C (and stackoverflow) and I'm a little turned around about best practices with regards to properties.

My understanding is that when you're completely done with a property you can avoid bugs by releasing them and then immediately setting to nil so that subsequent messages also return nil instead of an exception.

[myProperty release], myProperty = nil;

However, when it comes to dealloc for 'copy' and 'retain' properties is there any need to do both? or does a simple

[myProperty release] cut it? Also, am I correct that I don't need to release 'assign' properties in dealloc?

Thanks!

like image 368
averydev Avatar asked Aug 04 '10 02:08

averydev


1 Answers

Do release, but don't bother setting to nil. Setting to nil via your @synthesized setter:

self.myProperty = nil

will release your old value as part of the reassignment (though as noted in the comments, may have unwanted side effects), but simply assigning nil to your member variable:

myProperty = nil

will not.

[myProperty release]

is all you need.

(and you are correct about "assign" properties.)

like image 116
Seamus Campbell Avatar answered Oct 07 '22 01:10

Seamus Campbell