Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling -init multiple times in Objective-C

What happens when you call -init multiple times on one object, are there some hidden side effects? Can you assume that no additional memory is allocated? Would anything go against such an idea?

like image 937
Patrik Avatar asked Jan 01 '10 20:01

Patrik


Video Answer


2 Answers

Calling -init multiple times is undefined, unsupported, and will lead to bugs, crashes, and other unexpected behavior.

Many classes -- NSString, NSArray, and NSDictionary, for example -- don't actually allocate anything when the +alloc method is called. It isn't until one of the various -init* methods are called that the object has enough context to figure out the most efficient means of doing whatever you ask.

like image 98
bbum Avatar answered Sep 24 '22 15:09

bbum


One thing I'd add to Bill's answer is that when writing your own -init methods, code defensively and don't assume that they'll only be invoked once.

like image 23
NSResponder Avatar answered Sep 21 '22 15:09

NSResponder