如何使用new进入for循环

时间:2011-09-15 08:45:50

标签: objective-c loops new-operator

我想在目标c中使用new into for循环 例如

NSMutablearray *array = [[NSMutableArray alloc]] init];

for (int i=0 ; i< 5; i++){
    [array addObject:[[Direction alloc] initWith:random()];
}

当我运行它时,只有一个对象,然后停止消息。 但

NSMutablearray *array = [[NSMutableArray alloc]] init];

   Direction * d=  [[Direction alloc] initWith:random()]
   for (int i=0 ; i< 5; i++){
        [array addObject:d];
     [array addObject:d];
     [array addObject:d];
     [array addObject:d];
     [array addObject:d];

    }

没有错误。

2 个答案:

答案 0 :(得分:0)

NSMutableArray *array = [[[NSMutableArray alloc]] init] autorelease];

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
for (int i=0 ; i< 5; ++i){
    Direction *direction = [[[Direction alloc] initWith:(arc4random()%100)] autorelease];
    [array addObject:direction];
}
[pool drain];

答案 1 :(得分:0)

它会出错,因为您的方向对象未被释放。你正在为它分配值evry time loop gose你可以用两种方式做到这一点

 Direction * d=  [[Direction alloc];

For (loop)
{
d=random() // something like this
}

上述人说你可以自动恢复它。