下面这句就是new出来的,但是由于它调用了类方法 Person *p = [Person new];//+ (id)new;
下面是使用了对象方法init创建的这又几点好处: 1.可以重写 - (id)init 方法,也就是说,我们可以把控程序的实现细节,new虽然可以,但是他封装了这个方法。 2.由于使用了alloc ,对象计数器会加1,这样可以管理内存中对象的释放,当然,用Arc就更方便了 3.先分配存储空间+alloc,再初始化-init,初始值是0,这样理论上会比new快一点点 Person *p2=[[Person alloc] init];//以后开发都这么写
new 和 alloc/init 的区别: 1.区别只在于alloc分配内存是使用了zone zone:它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速
2.不推荐new是因为,如果你想调用allocXXX方法,就不可以了。
|