0

NSArrayをインスタンス化してNSMutableArrayを渡すと、NSArrayになりますか、それとも1つのように見えますか。

つまり、可変アレイは最終的にリリースされます

- (NSArray *)getObjectivesWithPerspective:(Perspective *)perspective
{
    NSMutableArray *result = [NSMutableArray array];

    for (ObjectiveManagedObject *objective in self.objectives)
    {
        if (objective.perspective.objectID == perspective.objectID) {
            [result addObject:objective];
        }
    }

    return [NSArray arrayWithArray:result];
}
4

3 に答える 3

1

この回答を参照してください:https ://stackoverflow.com/a/1392051/254422

基本的に、オブジェクトを新しい自動解放された不変のNSArrayにコピーします。

+arrayを使用して作成されたNSMutableArrayは自動解放されます。

于 2012-05-21T12:23:38.890 に答える
0

これに関するいくつかの情報はここにあります:-arrayWithArrayは実際に何をしますか?。ただし、返される配列は不変である必要があります。NSArrayは、参照を不変の配列にコピーします。

疑わしい場合は、テストを行ってください。メソッドから配列を取得し、それをNSMutableArrayとしてキャストして、オブジェクトを追加してみてください。これを行うと、エラーが発生するはずです。

于 2012-05-21T12:23:38.307 に答える
0

NSMutableArrayのサブクラスと同様に、新しいオブジェクトを作成しなくても直接NSArray戻ることができます。resultNSArray

- (NSArray *)getObjectivesWithPerspective:(Perspective *)perspective
{
    NSMutableArray *result = [NSMutableArray array];

    for (ObjectiveManagedObject *objective in self.objectives)
    {
        if (objective.perspective.objectID == perspective.objectID) {
            [result addObject:objective];
        }
    }

    return result;
}
于 2012-05-21T13:02:40.587 に答える