今天读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;
}