次のような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ループ全体が1つの単一の実行ループ内で実行されるかどうかです。
私の2番目の質問は、ループしている配列が含まれているすべてのオブジェクトへの強力な参照を保持しているため、オブジェクトが自動解放プールを介して解放メッセージを送信されるかどうかは重要ですか?
それが明確だったことを願っています。。。何かご意見は?