此種bug分為兩種情況:
一:當你這個控制器的view是通過xib加載的,但是在xib里面并沒有綁定
file's Owner
,或者綁定了file's Owner
,但是沒用對file's Owner
里面的view屬性進行連線
解決情況:第一步:
第二步:
二:第二種出bug的原因可能很多人都會忽略,當你的控制器的文件名稱跟你用xib描述的一個view的名稱很像,就是少了一個controller,此時也會在運行的時候崩掉
例如
首先來分析:PPVideoViewController并沒用用xib去描述,但是如果在同一個工程文件中,出現了跟控制器文件名相同但是少了controller的文件名,恰恰自定義的PPViedeoView是用xib去描述的,
bug:那么問題就來了:當另一個控制器想使用PPVideoViewController的view的時候,那這個時候運行的時候就會報跟上面同樣的錯
原因:因為創建一個控制器我們一般都是PPVideoViewController *vc = [PPVideoViewController alloc] init]; init內部首先會去找有沒有跟PPVideoViewController相同的xib文件名,如果沒有再去找有沒有跟PPVideoViewController但是少了Controller的xib文件名,如果有就去加載這個xib! 這里一加載就會報錯,因為PPVideoView.xib并不是用來描述PPVideoViewController控制器view的而是用來描述自定義的PPVideoView的,因此就會在運行的時候報錯