美文网首页
OC 中 alloc/init 到底比new好在了哪里

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

作者: 再好一点点 | 来源:发表于2019-01-25 16:39 被阅读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:。

相关文章

网友评论

      本文标题:OC 中 alloc/init 到底比new好在了哪里

      本文链接:https://www.haomeiwen.com/subject/ouqvjqtx.html