作家
登录

浅谈iOS Crash(一)

作者: 来源: 2017-07-21 17:29:36 阅读 我要评论

 [self objectAtIndex:index]; 
  •  
  •      }else
  •  
  •          NSLog(@"警告:数组越界!!!"); 
  •  
  •      }     
  •  
  •      return nil; 
  •  
  •  
  •   
  •  
  • @end  
    • 场景2:数组添加数据对象时nil解决办法:添加对象到数组前,断定是否是nil

    一、捕获iOS Crash

    解释:数组的删除等操作处理类似,数组操作前要进行数据校验。

    2、多线程下的Crash

    一般多线程产生的Crash,会收到SIGSEGV旌旗灯号,注解试图拜访未分派给本身的内存, 或试图往没有写权限的内存地址写数据。

    • 场景1:子线程中更新UI

    解决办法:将UI更新操作放在主线程中,可以应用performSelectorOnMainThread 或 GCD

    1. //子线程中,应用宏将更新UI的义务派发到主队列 
    2.  
    3.   #define dispatch_main_sync_safe(block) \ 
    4.  
    5.   if ([NSThread isMainThread]) { \ 
    6.  
    7.      block(); \ 
    8.  
    9.   } else { \ 
    10.  
    11.       dispatch_sync(dispatch_get_main_queue(), block); \ 
    12.  
    13.   } 
    14.  
    15.   
    16.  
    17.   #define dispatch_async_main(block)              dispatch_async(dispatch_get_main_queue(), block)  
    • 场景2:多线程中创建单例解决办法:应用dispatch_once,包管代码只履行一次,包管线程安然。
    1. //以QSAccountManager单例为例 
    2.  
    3.   static QSAccountManager *_shareManager = nil; 
    4.  
    5.   + (instancetype)shareManager{ 
    6.  
    7.   
    8.  
    9.       static dispatch_once_t once; 
    10.  
    11.       dispatch_once(&once, ^{ 
    12.  
    13.           _shareManager = [[self alloc] init]; 
    14.  
    15.       }); 
    16.  
    17.       return _shareManager; 
    18.  
    19.   } 
    20.  
    21.   
    22.  
    23.   + (instancetype)allocWithZone:(struct _NSZone *)zone{ 
    24.  
    25.   
    26.  
    27.       static dispatch_once_t onceToken; 
    28.  
    29.       dispatch_once(&onceToken, ^{ 
    30.  
    31.           _shareManager = [super allocWithZone:zone]; 

        推荐阅读

        如何在Linux中恢复仍在活动进程中的已删除文件

      cp 13 /home/m/Downloads/Compressed 因为我们已经知道文件名包含 .zip 扩大名,是以我们可以应用 .zip 扩大名进行搜刮。它将限制输出结不雅并显示所需的过程。很多情况下,删除的文件都可以恢复,比>>>详细阅读


      本文标题:浅谈iOS Crash(一)

      地址:http://www.17bianji.com/lsqh/36347.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)