iOS开发_new与alloc init 的区别

2,460 阅读1分钟
iOS创建对象的两种方式
  • UIView *myView = [[UIView alloc] init];

  • UIView *myView = [UIView new];

alloc init / new
第一种方式(alloc init)来创建对象时,系统首先会给变量分配内存,然后调用init方法来进行初始化,或者调用initWith方法来初始化。
第二种方式(new)是第一种方式中两步的综合,系统会直接开辟好内存,调用init方法来初始化对象,但是只能调用init方法。
区别
  • 1.alloc init在分配内存的时候使用了zone,它是在给对象分配内存的时候把关联的对象分配到一个相邻的区域内,以便于调用时消耗很少的内存,提升程序的处理速度;
  • 2.使用new来创建对象的话,初始化方法被固定死了,只能使用init,不能调用其他的initWith方法;
  • 3.使用alloc init方法,我们可以重写init方法,但是如果使用new来创建的话就只能走系统的init方法。

有问题欢迎指正以及相互探讨 —— CoderSun