-3

可能重复:
alloc 和 init 他们实际做了什么

我们做类似[[className alloc] init]的代码,所以在alloc中实际发生了什么以及在init中发生了什么,我的理解是alloc将创建该类的实例并为该实例分配一块内存,那么init的用途是什么?

提前致谢。

4

3 回答 3

4

alloc:它为您创建的对象分配内存,增加保留计数

init:它使用自定义值和属性(如果您提供它们)初始化您创建的对象,否则使用默认值和属性

于 2012-09-16T08:07:18.863 回答
4

那么init有什么用呢?

很简单:它做了 alloc 没有做的事情(因为它做不到)。它初始化自定义实例变量,将属性设置为默认值等...

于 2012-09-16T08:07:51.497 回答
3

alloc 方法进行分配并将保留计数增加 1,并且 +alloc 返回的任何内容都必须在某处释放。

init 负责在分配后初始化对象。消耗消息对象的保留计数并产生保留计数 +1 的对象(不是 1,而是“加 1”);必须释放从 init 返回的结果才能正确管理。

顺便说一下,+alloc 是类方法,-init 是实例方法

于 2012-09-16T08:09:00.030 回答