2015-10-19 56 views
1
  1. 如果注释掉的代码“dispatch_async”这将导致在碰撞[CTTelephonyNetworkInfo的alloc]初始化]为EXC_BAD_ACCESS;
  2. 如果我不判断“if(!networkInfo)”而不是代码“CTTelephonyNetworkInfo * networkInfo = networkInfo = [[CTTelephonyNetworkInfo alloc] init];”将导致记忆快速!谢谢!CTRadioAccessTechnologyDidChangeNotification新CTRadioAccessTechnologyDidChangeNotification会导致崩溃如下

    viewdidload: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateAppCellWithNetworkType:) name:CTRadioAccessTechnologyDidChangeNotification object:nil]; 
    
    - (void)updateAppCellWithNetworkType:(id)sender{ 
    
    **//dispatch_async(dispatch_get_main_queue(), ^{** 
    
    NSString *type = nil; 
    Reachability *currentReach = [Reachability reachabilityWithHostName:@"www.apple.com"]; 
    if (currentReach.isReachableViaWiFi) { 
    type = @"WiFi"; 
    }else{ 
    
    static CTTelephonyNetworkInfo *networkInfo = nil; 
    
    **if (!networkInfo) { 
        networkInfo = [[CTTelephonyNetworkInfo alloc]init]; 
    }** 
    
    type = [self getTelephonyNetworkTypeWithCTRadioAccessTechnology:networkInfo.currentRadioAccessTechnology]; 
    } 
    } 
    

enter image description here

回答

0

据表示,不创建从通知观察者方法CTTelephonyNetworkInfo对象。检查“Know Your Ra​​dio”部分下的objc.io链接中提供的文档。

这可能有帮助,我有类似的经历,并且这样做可以修复崩溃。