我了解引用计数和“拥有一个对象”的整个业务,如果你在 Objective-c 中分配一个对象,你有责任释放它
但是,您究竟什么时候需要在新创建的对象上调用 alloc?只是在范围结束后保留引用还是有其他原因
我了解引用计数和“拥有一个对象”的整个业务,如果你在 Objective-c 中分配一个对象,你有责任释放它
但是,您究竟什么时候需要在新创建的对象上调用 alloc?只是在范围结束后保留引用还是有其他原因
您需要调用 alloc 来为对象分配内存。
对象的典型设置类似于:
Object *obj = [[Object alloc] init];
alloc 调用为对象分配内存,init 调用对其进行初始化(为所有属性/属性提供合理的默认值)。
一些对象类型带有工厂方法,例如
NSArray *arr = [NSArray array];
在这种情况下,对象由单个数组调用初始化和分配。
这些都与引用计数无关(直接),除了不同的所有权规则通常适用于这两种方法。
我认为您误解了一个基本概念。将 alloc 发送到一个类将导致创建您拥有的该类的新对象(尚未初始化)(保留计数将为 1)。
从你的问题“你什么时候需要在新创建的对象上调用 alloc ?” - 如果对象是新创建的,则意味着有人已经分配了它。
如果您的意思是:什么时候需要在新创建的对象上调用保留?答案是如果你想自己持有它而不依赖于分配它的人,并且可能会在某个时候释放它。请记住,alloc/new 语法将保留计数提高一,而其他创建方法(如 [NSArray 数组])返回自动释放对象..
一般来说,我会建议使用 ARC 而不会被这些问题所困扰..
我不完全是一个objective-c的人,但我不认为你调用alloc
任何对象,你在一个类上调用它来分配对象并调用init
新分配的对象。
如果这是您的设置,您可能希望在自动释放池执行retain
之后保留引用。release
这经常发生在使用[NSThing thingWithStuff:stuff]
或类似创建的对象上。