我想执行一个看起来像这样的 for 循环:
for (id object in [[MyClass methodReturningSet] allObjects]) {
//do something
}
该 methodReturningSet 看起来像这样:
- (NSSet *)methodReturningSet {
MyObject *object1 = [[MyObject alloc] initWithCustomInfo:info1] autorelease];
MyObject *object2 = [[MyObject alloc] initWithCustomInfo:info2] autorelease];
MyObject *object3 = [[MyObject alloc] initWithCustomInfo:info3] autorelease];
MyObject *object4 = [[MyObject alloc] initWithCustomInfo:info4] autorelease];
return [NSSet setWithObjects: object1, object2, object3, object4, nil];
}
我的问题是,这在内存管理方面是否安全?
我目前的理解是,在运行循环完成后,“对象”将被发送一条释放消息。
我的第一个问题是,整个 for 循环是否在一个运行循环中执行?
我的第二个问题是,是否通过自动释放池向对象发送释放消息是否重要,因为我们循环的数组拥有对其包含的所有对象的强引用?
希望这很清楚。. . 有什么想法吗?