+ new {
id newObject = (*_alloc)((Class)self, 0);
Class metaClass = self->isa;
if (class_getVersion(metaClass) > 1)
return [newObject init];
else
return newObject;
}
+ alloc {
return (*_zoneAlloc)((Class)self, 0, malloc_default_zone());
}
- init {
return self;
}
[className new]效果等同于[[className alloc] init].
区别只在于alloc分配内存的时候使用了zone.
这个zone作用是在给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升程序处理速度.