1

ASIHTTPRequestプロセス内で使用されるNSMutableArrayがあります。データのロードが完了すると、NSMutableArrayは情報を保存します。データを次のように追加すると

[MyArray addObject];

エラーはありません。ただし、データを次のように挿入すると

[MyArray insertObject:[UIImage imageWithData:data] atIndex:buttonTag];

mallocエラーまたはインデックスの範囲外の例外の問題があります。これはスレッドセーフの誤動作だと思います。これに対する解決策はありますか?

編集済み:appdelegate.h内

 @interface{
  NSMutableArray *imageArray;
 }

appdelegate.mで

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
imageArray = [[NSMutableArray alloc] init];
return YES;
}

AsyncImageView.hで

@interface{
  AppDelegate *delegate
}

AsyncImageView.m

- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection {

  delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  [delegate.imageArray insertObject:[UIImage imageWithData:data] atIndex:buttonTag];

 }
4

2 に答える 2

0

配列の境界内で配列に挿入する必要があります。最後まで挿入しようとしています。

アップルのドキュメント:

配列に 2 つのオブジェクトが含まれている場合、そのサイズは 2 であるため、オブジェクトをインデックス 0、1、または 2 に追加できます。インデックス 3 は不正であり、範囲外です。インデックス 3 (配列のサイズが 2 の場合) にオブジェクトを追加しようとすると、NSMutableArray は例外を発生させます。

于 2012-08-08T03:29:28.053 に答える