开发者

Calling -init multiple times in Objective-C

What happens when you call -init multiple times o开发者_运维知识库n one object, are there some hidden side effects? Can you assume that no additional memory is allocated? Would anything go against such an idea?


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜