Release, Dealloc, and the Self reference

A1) [nil release] is fine (won’t do anything)

A2) No. Don’t touch objects after they’ve been deallocated. They should be set to nil after they are released.

A3) It’s not necessary to set a released pointer to nil, but you get dangling pointers (i.e., you can’t tell if an object is valid or not). Setting a property to nil is often used to release the underlying ivar, so failing to do this can cause a memory leak

A4) nil and NULL are both zero, so are technically the same.

A5) Yes, you must use self.someProperty for properties, just as you would use [self someProperty] if it was just a method

A6) self is essentially a struct, so you can access ivars like so: self->someIvar. There is no need to, though.

A7) When you don’t want to run the setter/getter methods for whatever reason. I use it ocassionally when the setter doesn’t allow nil values, and I need to release the variable

A8) dealloc is called automatically when release is called the correct amount of times. You should never call dealloc directly (except for [super dealloc])

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)