0

iOS アプリのバグセンスから、再現できないためデバッグできないクラッシュ レポートがいくつかありました。1日に200回以上発生しているので、かなり深刻だと思います。

NSZombie について何か読んだことがありますが、クラッシュを再現できないので、役に立たないと思います。クラッシュレポートは次のとおりです。

SIGSEGV
0 libobjc.A.dylib 0x3aa515b0 objc_msgSend + 15
1 UIKit 0x34d493df + 294
2 UIKit 0x34cae469 + 52
3 QuartzCore 0x34926099 + 160
4 QuartzCore 0x34925ff1 + 64
5 IOMobileFramebuffer 0x36ba1fd7 + 154
6 IOKit 0x33920449 IODispatchCalloutFromCFMessage + 192
7 CoreFoundation 0x32d035db + 118
8 CoreFoundation 0x32d0e173 + 34
9 CoreFoundation 0x32d0e117 + 138
10 CoreFoundation 0x32d0cf99 + 1384
11 CoreFoundation 0x32c7febd CFRunLoopRunSpecific + 356
12 CoreFoundation 0x32c7fd49 CFRunLoopRunInMode + 104
13 GraphicsServices 0x368562eb GSEventRunModal + 74
14 UIKit 0x34b95301 UIApplicationMain + 1120
15 My Bet main (main.m:16) Live 0x000705e7 0x6d000 + 13799

いくつかの同様のスレッドでは、問題が UIAlertView にある可能性があると彼らは考えているため、ここに私がそれらを使用する方法の例を示します。

UIAlertView *alertView;

file.m で

-(void)wait{
UIActivityIndicatorView * activityView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityView.frame = CGRectMake(121.0f, 50.0f, 37.0f, 37.0f);
[activityView startAnimating];
alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Searching...", @"") message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
[alertView addSubview:activityView];
[alertView show];
[NSThread detachNewThreadSelector:@selector(function) toTarget:self withObject:nil];
}
-(void)function{
// Do some web request
[alertView dismissWithClickedButtonIndex:0 animated:NO];
if(response == nil){
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Timeout", @"") message:NSLocalizedString(@"Connection timeout", @"") delegate:nil cancelButtonTitle:NSLocalizedString(@"Close", @"") otherButtonTitles:nil ];
    [alert show];
}
}

これを解決する方法についてのヒントはありますか? ありがとう

4

1 に答える 1

2

おそらくクラッシュはUIAlertView、他のスレッドからの を閉じて表示したことが原因です。

UI他のスレッドでタスクを実行しないでください。UIタスクはメイン スレッドで実行する必要があります。

function次のように変更します。

-(void)function
{
 // Do some web request

 dispatch_async(dispatch_get_main_queue(), ^{
    [alertView dismissWithClickedButtonIndex:0 animated:NO];
    if(response == nil)
    {
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Timeout", @"") message:NSLocalizedString(@"Connection timeout", @"") delegate:nil cancelButtonTitle:NSLocalizedString(@"Close", @"") otherButtonTitles:nil ];
    [alert show];
    }
  });
}
于 2013-04-29T13:44:14.580 に答える