Iphone 如何释放多个alloc类?

Iphone 如何释放多个alloc类?,iphone,ios,cocos2d-iphone,Iphone,Ios,Cocos2d Iphone,嗨,我搞不清楚如何释放已经没有存储头文件指针的aclloc类。循环之后,我丢失了指向类的指针,因为它具有所有相同的实例名 for(i=0;i<20;i++){ MyClass *class = [[MyClass init]alloc]; class.count = i; [classArray addObject:class]; [self addToScene:class]; } for(i=0;i如果我理解正确,请将对象存储在NSArray中并释放它们。然后

嗨,我搞不清楚如何释放已经没有存储头文件指针的aclloc类。循环之后,我丢失了指向类的指针,因为它具有所有相同的实例名

for(i=0;i<20;i++){
  MyClass *class = [[MyClass init]alloc];
   class.count = i;
  [classArray addObject:class];  
  [self addToScene:class];

}

for(i=0;i如果我理解正确,请将对象存储在
NSArray
中并释放它们。然后在处理完对象后释放数组。这是一种方法。

Præ-scriptum:应该交换alloc和init调用(首先分配,然后初始化)

您必须在循环中释放它们-将它们添加到数组中会保留它们

for(i = 0;i < 20; i++) {
    MyClass *obj = [[MyClass alloc] init];
    obj.count = i;
    [classArray addObject:obj];
    [obj addToScene:obj];
    [obj release];
}
(i=0;i<20;i++)的
{
MyClass*obj=[[MyClass alloc]init];
obj.count=i;
[classArray addObject:obj];
[obj addToScene:obj];
[obj释放];
}

数组保留了自己的内容,因此您只需确保不保留它:

// Simpler
{
    MyClass *c = [[[MyClass alloc] init] autorelease];
    ⋮
}
或:

甚至:

// Rely on ARC (simpler and less memory).
{
    MyClass *c = [[MyClass alloc] init];
    ⋮
}

编辑:归功于@H2CO3发现了交换的alloc和init调用。

看,当你向数组添加一个对象时,它的引用计数增加了1,因为数组引用了该对象。所以最好在添加i之后释放分配的对象t到数组,或在分配时将其标记为自动释放,以便在帧结束时选择标记为自动释放的所有对象进行垃圾收集

试试这个

MyClass *obj = [[[MyClass alloc] init] autorelease];
或者这个,

MyClass *obj = [[MyClass alloc] init];
....
....
[classArray addObject: obj];
[obj release];

你确定按init和alloc的顺序吗?@H2CO3:谢谢。我甚至没有检查它们;我只是复制粘贴。没问题:)我倾向于发现这些错误,因为它们会造成伤害…:-)不知道数组保留对象。哈哈,我真是个笨蛋,谢谢@user842589在文档中。:)无论如何,这是不符合逻辑的,否则,想一想。。。
MyClass *obj = [[MyClass alloc] init];
....
....
[classArray addObject: obj];
[obj release];