OC 中 alloc/init 到底比new好在了哪里

2019-01-25  本文已影响0人  再好一点点

使用oc语言开发的时候创建一个对象一般像这样[className alloc] init],很少使用[className new],那么这两种方式哪一种更好呢?

先看几张高清无码图

在person类里边定义两个方法,一个重写父类的,一个自定义

在控制器中分别使用这几种方式创建person对象

接下来看结果

是不是很神奇,[Person new]其实内部也调用了init方法,它是在开辟了内存以后调用的init.

而[Person alloc] init]在alloc的时候调其实是调用了allocWithZone分配了内存,然后在调用init

也就是说[Person alloc] init] 实际上做了两步allocWithZone和init,而new是进行了内存分配,然后调用init;使用alloc的优点就是alloc分配的内存会和相关联的对象在内存地址中相靠近,利于内存读取。

另外[Person alloc] init]还可以比较灵活的自定义init方法,例如本文中的initWithName:。

上一篇 下一篇

猜你喜欢

热点阅读