alloc 和allocwithzone的区别

今天读cocoa design patterns 引发的问题 alloc和allocwithzone的存在解决了很多问题,但是还是很疑惑。(随便说句 此书中文版翻译不靠谱。。。)

下面是截自http://stackoverflow.com/的一段分析,虽然还没有体会,但是还是保留下来。

When one object creates another, it’s sometimes a good idea to make sure they’re both allocated from the same region of memory. The zone method (declared in the NSObject protocol) can be used for this purpose; it returns the zone where the receiver is located.

This suggests to me that your ivars, and any objects your classes "create" themselves could make use of+allocWithZone: in this way, to make the instances they create in the same zone.

-(id)init {
 
if(self =[super init]){
    someIvar
=[[SomeOtherClass allocWithZone:[self zone]] init];
 
}

 
return self;
}

你可能感兴趣的:(with)