0

だから私は次のコードを持っています:

NSMutableArray *array
array=[[NSMutableArray alloc] init];
[array addObject: object1];
[array addObject: object2];
NSLog(@"%@",array);

Macに接続されたiPodでアプリを使用すると、NSLogはnullだけを書き込み、object1object2を取得しません。私は何が間違っているのですか?

PS:配列は.hのプロパティです@property (nonatomic, retain) NSMutableArray *array;

4

5 に答える 5

2

それは次のとおりです。

array=[[NSMutableArray alloc] init];
于 2012-06-02T10:39:32.067 に答える
0

配列をプロパティとして宣言しました。対応する iVar は nil に初期化されます。したがって、init メソッドで初期化する必要があります。

あなたが使用したと仮定します

@synthesize array;

あなたのinitメソッドで

if (self) {
//other init stuff
array = [[NSMutableArray array] retain];
}

次に、ものを追加するとき

[self.array addObject: object];

また、そこに置くオブジェクトは適切に初期化する必要があり、nil ではないことに注意してください。だから、これも記録してみてください

NSLog("the object %@ was put in array. Array contains: %@",object, self.array);

そして、dealloc では、配列を解放してください!

于 2012-06-02T11:30:54.290 に答える
0

1 行で実行してみてください。

 NSMutableArray *array = [[NSMutableArray alloc] arrayWithObjects:@"a", @"b", nil];
 NSLog(@"%@",array);
于 2012-06-02T10:54:23.840 に答える
0

あなたの[[NSMutableArray array] init]はずです[[NSMutableArray alloc] init]。それは機能しますが、オブジェクトを初期化する適切な方法ではありません。あなたは自分が何であるかを投稿していませんarray。間違っていると宣言したと思います。オブジェクトへのポインターである必要がありNSMutableArrayます。ここに作業コードがあります:

NSMutableArray *array=[[NSMutableArray alloc] init];
[array addObject: @"a"];
[array addObject: @"b"];
NSLog(@"%@",array);
于 2012-06-02T10:40:18.383 に答える
0

配列をまったく初期化していないため、何も返されません。

array=[[NSMutableArray alloc] init];
[array addObject: object1];
[array addObject: object2];
NSLog(@" Array is:%@",array);

後でリリースすることを忘れないでください(ARCを使用していない場合)

于 2012-06-02T10:46:33.577 に答える