0

NSMutable 配列に画像を保存しようとしていますが、機能しません

これが私がやっていることです

[imagesList addObject:[UIImage imageNamed:@"b.png"]];

この行を実行した後、何らかの理由でオブジェクトの数が 0 のままであることに気付きました。

ありがとう

このコードをいくつかの領域で繰り返します。

グローバルに私は宣言します:

NSMutableArray *imagesList;
NSUserDefaults *imagesHistory;

私のviewdidloadメソッドでは、次のように書いています。

imagesHistory=[NSUserDefaults standardUserDefaults];  //imagesHistory is created globallt as NSUserDefault imagesHistory
[imagesHistory setObject:imagesList forKey:@"images history"];

UIImage *image;
image=[UIImage imageNamed:@"b.png"];

[imagesList addObject:image];
imagesHistory=[NSUserDefaults standardUserDefaults];
[imagesHistory setObject:imagesList forKey:@"images history"];

そして、didFinishLaunchingWithOptions に次のように書きます: (文字列を追加するときにそれを行う必要はありませんが...)

 imagesList = [[NSMutableArray alloc] init];
4

4 に答える 4

3

それがグローバル変数であるかどうかに関係なく、オブジェクトに対して SOMEWHEREを呼び出す必要がありallocます。initアプリ全体で使用する場合appDidFinishLaunchingWithOptionsは、次の呼び出しを追加するのに適切な場所です。

imagesList = [[NSMutableArray alloc] init];
于 2012-05-24T18:47:47.890 に答える
1

空の配列は保持されていますか? 自動参照カウントを使用していない場合は、次のように配列を初期化する可能性が高くなります。

imagesList = [[NSMutableArray alloc] init];

しかし、それは保持されていません。空の配列を保持して、コード内でさらに追加されるようにする必要があります。

imagesList = [[[NSMutableArray alloc] init] retain];

viewDidUnloadすべての操作が完了したら、適切な場所でアレイを解放することを忘れないでください。

于 2012-05-25T01:01:10.053 に答える
0

imagesListオブジェクトを追加しようとした後、割り当て/初期化しています。imageList何かを追加する前に、割り当て/初期化する必要があります。

そこにあることを確認するには、次のようなことを試してください。

if (!imagelist) imageList = [[NSMutableArray alloc] init];

それが存在し、まだこの問題が発生している場合は、新しい NSMutableArray を割り当て/初期化しimageList、オブジェクトを追加した後に割り当てている可能性があります。これは、古い配列が破棄され、項目がゼロの新しい配列が残ることを意味します。

于 2012-05-24T20:19:27.587 に答える
0

試すUIImageView *image; image=[UIImage imageNamed:@"b.png"];

また、@property(nonatomic,retain)「retain」の代わりに「strong」を使用

于 2012-05-30T05:14:08.853 に答える