兼容iOS8時遇到的閃退問題

1.xib實現的ViewController初始化時應使用的alloc initwithNibName

在loadView 時
1> 它會先去查找與UIViewController相關聯的xib文件,通過加載xib文件來創建UIViewController的view

如果在初始化UIViewController指定了xib文件名,就會根據傳入的xib文件名加載對應的xib文件

[[ViewController alloc] initWithNibName:@"ViewController"bundle:nil];

如果沒有明顯地傳xib文件名,就會加載跟UIViewController同名的xib文件

[[ViewController alloc] init]; // 加載ViewController.xib

2> 如果沒有找到相關聯的xib文件,就會創建一個空白的UIView,然后賦值給UIViewController的view屬性
摘自http://www.lxweimin.com/p/9bf8f3de2cd1

但是iOS8時不支持(不知道什么時候變更的)

2. 使用僵尸對象(野指針)

使用場景:tableviewcell上有一個按鈕點擊事件由block實現,在block中又寫有tableview的reload方法,導致一點擊cell上的按鈕,tableview刷新,當前cell就被釋放重新加載了

//類似于這樣
 if (self.deleteBlock!=nil) {
        //block中reload tableview 導致當前cell變成了野指針
        self.deleteBlock(self.bmModel);
    }
    //此時調用的self(既cell)為野指針導致崩潰
   //此句為舉例,解決方法肯定就是block放在最后 后面不能再調用self的一些操作
    self.mModel = nil;

3.數組越界

self.sectionCells[section].space_type != 0(寫在tableview的viewforhead代理中)

很奇怪在iOS8上會崩潰,這里崩潰原因是self.sectionCells越界,具體原因未知解決辦法只需要判斷一下是不是越界就行了
self.sectionCells.count>section&&self.sectionCells[section].space_type != 0

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • *7月8日上午 N:Block :跟一個函數塊差不多,會對里面所有的內容的引用計數+1,想要解決就用__block...
    炙冰閱讀 2,553評論 1 14
  • 1.badgeVaule氣泡提示 2.git終端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夾內容...
    i得深刻方得S閱讀 4,757評論 1 9
  • 概述在iOS開發中UITableView可以說是使用最廣泛的控件,我們平時使用的軟件中到處都可以看到它的影子,類似...
    liudhkk閱讀 9,091評論 3 38
  • 哦吼吼,又研究了幾天,把FMDB這個封裝好的數據庫搞定了,寫了個簡單的例子,基于FMDB的添刪改查操作,界面很一般...
    lichengjin閱讀 568評論 0 0
  • 我突然想起那個美麗的字眼“永遠”,我們必將永遠充滿信心地走下去,一起手挽手走向明天,將所有憂慮都看做黎明前的幻覺。
    白饕閱讀 185評論 0 0