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