2011-07-07 5 views
0

初心者のご質問は申し訳ありませんが、内部にNSNumberをいくつか入れてNSMutableArrayが必要です。私のコードは次のようになります:NSMutableArrayをNSNumberオブジェクトで作成する

for (...){ 
NSNumber *temp_number = [[NSNumber alloc] initWithInteger:someNSInteger]; 
     [target_array addObject:[temp_number copy]]; 
     [temp_number release]; 
} 

これは正しい方法ですか?それは漏れますか?

ありがとうございます! Miguel

答えて

3

うん、それが漏れる。あなたは欲しい:

NSNumber *temp_number = [[NSNumber alloc] initWithInteger:someNSInteger]; 
    [target_array addObject:temp_number]; 
    [temp_number release]; 

したがって、いいえcopy。そのロジックは、allocを使用するため、temp_numberを所有することになります。その後、それを配列に追加し、配列は必要なものを行います。 temp_numberは意図した目的のために使用したので、もはやそれを所有してリリースする必要はありません。

コピーを取ると、NSNumberという別のインスタンスも作成されます。これも自分自身で所有しているため、終了するときに解放する必要があります。

実際には、配列(割り当てられていてnilではなく存在する場合)は、オブジェクト自体を保持しますが、それはそのクラス固有の実装の詳細であり、依存したり、コントラクトを超えて、追加したオブジェクトが後で配列内に見つかります。

関連する問題