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 a
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.
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.