私の分割ビュー iPad アプリでは、デフォルトの詳細ビューが配列からランダムな画像を読み込み、ユーザーがそのビューに戻るたびにこれを行います。アプリはそのビューで正常に読み込まれ、別のビューに正常に移動できます。問題は、そのビューに戻るとクラッシュする場合があり、デフォルト ビューに戻った後に別のビューを選択するとクラッシュする場合があることです。リーク ツールを実行してもリークは表示されず、クラッシュが発生するたびにログに何も表示されません。「Received Memory Warning」ログを一度受け取ったので、クラッシュがどこかでリークに関係しているに違いありません。どこにあるのかわかりません。ARCを使用しています。何か案は?
これが私のviewDidLoadメソッドです:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIImage *agelity = [UIImage imageNamed:@"Agelity"];
UIImage *agelity2 = [UIImage imageNamed:@"Agelity2"];
UIImage *biltmore = [UIImage imageNamed:@"Biltmore"];
UIImage *biltmore2 = [UIImage imageNamed:@"Biltmore2"];
UIImage *biltmore3 = [UIImage imageNamed:@"Biltmore3"];
UIImage *choice = [UIImage imageNamed:@"Choice"];
UIImage *enterprise = [UIImage imageNamed:@"Enterprise"];
UIImage *enterprise2 = [UIImage imageNamed:@"Enterprise2"];
UIImage *grainger = [UIImage imageNamed:@"Grainger"];
UIImage *grainger2 = [UIImage imageNamed:@"Grainger2"];
UIImage *greatWolf = [UIImage imageNamed:@"Great_Wolf"];
UIImage *greatWolf2 = [UIImage imageNamed:@"Great_Wolf2"];
UIImage *officeDepot = [UIImage imageNamed:@"Office_Depot1"];
UIImage *officeDepot2 = [UIImage imageNamed:@"Office_Depot2"];
UIImage *officeDepot3 = [UIImage imageNamed:@"Office_Depot3"];
UIImage *sams = [UIImage imageNamed:@"Sams"];
UIImage *sams2 = [UIImage imageNamed:@"Sams2"];
NSMutableArray *benefitAds = [[NSMutableArray alloc]initWithObjects:agelity, agelity2, biltmore, biltmore2, biltmore3, choice, enterprise, enterprise2, grainger, grainger2, greatWolf, greatWolf2, officeDepot, officeDepot2, officeDepot3, sams, sams2, nil];
int randomIndex = arc4random() % [benefitAds count];
adImage.image = [benefitAds objectAtIndex:randomIndex];
[self configureView];
}
編集: imageNamed の代わりに imageWithData を使用するという提案を使用しようとしているので、これを行っています:
NSData *agelityData = [NSData dataWithContentsOfFile:@"Agelity"];
UIImage *agelity = [UIImage imageWithData:agelityData];
しかし、次の行で起動時にアプリがクラッシュします。
int randomIndex = arc4random() % [benefitAds count];
と:
Thread 1: EXC_ARITHMETIC(code=EXC_I386_DIV, subcode=0x0)
シミュレーターではなく自分のデバイスで実行すると、次のようになります。
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 3051310543 beyond bounds for empty array'
編集: exc_bad_access code=1 エラーが発生するため、例外ブレークポイントを設定しました。詳細ビューを変更しているときに、アプリがランダムにクラッシュするようです。新しい質問を作成すると思います。
助けてくれてありがとう!