iOS程序crash的幾種情況

調(diào)用block時(shí)沒(méi)有判斷Block是否為空

如果blocknil,直接調(diào)用會(huì)crash

ALiBlock block;
block();        //block是空的,妥妥的crash

正確的使用方法是先判斷block是否為空

if (block) {
    block();    //確定不為空之后才放心地調(diào)用
}

調(diào)用了不存在的方法

如果不確定對(duì)象中是否有該方法,直接調(diào)用會(huì)有可能導(dǎo)致crash

NSObject *a = [][NSObject alloc] init];
[a aaa];                //NSObject里沒(méi)有叫aaa的方法,這樣會(huì)crash

正確的使用方法是在不確定對(duì)象是否有該方法時(shí),先判斷一下

if ([a respondsToSelector:@selector(aaa)]) {
    [a aaa];            //確定有該方法之后才放心地調(diào)用
}

在cellForRowAtIndexPath中返回了nil

當(dāng)cellForRowAtIndexPath中返回nil時(shí),會(huì)直接crash。

出現(xiàn)這種情況的原因有:

numberOfRowsInSection返回的數(shù)目不正確,導(dǎo)致行數(shù)比cellForRowAtIndexPath預(yù)期的多,于是cellForRowAtIndexPath就不能正確返回超出預(yù)期的cell了。
cellForRowAtIndexPath中邏輯有誤,漏了一些情況,導(dǎo)致有些cell不能正確返回。

數(shù)組越界

這種老問(wèn)題不用多說(shuō),大家都很熟悉,但是又經(jīng)常出現(xiàn)。 = = |||

數(shù)組插入了nil對(duì)象

在數(shù)組中nil表示數(shù)組的結(jié)束位置。所以對(duì)數(shù)組進(jìn)行insertaddObject操作時(shí),如果插入了一個(gè)nil對(duì)象,那訪問(wèn)該對(duì)象之后的元素都會(huì)變成越界,OC為了安全,在插入nil的時(shí)候會(huì)直接crash。

正確使用方式是如果不確定一個(gè)元素是不是為空,就判斷一下吧。

重復(fù)release,或者不需要之后沒(méi)有置空

比如以下這個(gè)情況就會(huì)crash

UILabel *text = [[UILabel alloc] init];
[text release];
...// 中間干了很多事情
[text release];
NSLog(@"%@",text);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,622評(píng)論 30 472
  • iOS網(wǎng)絡(luò)架構(gòu)討論梳理整理中。。。 其實(shí)如果沒(méi)有APIManager這一層是沒(méi)法使用delegate的,畢竟多個(gè)單...
    yhtang閱讀 5,490評(píng)論 1 23
  • 背景 眾所周知,對(duì)于移動(dòng)客戶端而言,crash對(duì)于用戶是一種非常糟糕的體驗(yàn),crash率對(duì)于一款移動(dòng)應(yīng)用而言也是一...
    東野浪子閱讀 7,573評(píng)論 2 8
  • Baymax:網(wǎng)易iOS App運(yùn)行時(shí)Crash自動(dòng)防護(hù)實(shí)踐 版權(quán)聲明本文轉(zhuǎn)自網(wǎng)易杭州前端技術(shù)部公眾號(hào),由作者授權(quán)...
    IOS開(kāi)發(fā)攻城獅_Fyc閱讀 6,879評(píng)論 2 34
  • 你是誰(shuí) / 你從哪里來(lái) / 你到哪里去 / 我都還記得 “兩姓聯(lián)姻,一堂締約,良緣永結(jié),匹配同稱(chēng)。看此日桃花灼灼,...
    觀海難水閱讀 735評(píng)論 8 4

友情鏈接更多精彩內(nèi)容