一個iOS9 Bug:弄死iPhone很容易

蘋果iOS9推出也有一段時間了,原本覺得應該很穩定吧,但事實卻不是這樣。一日將iOS 8上運行得很良好的App在一臺iOS 9.3設備上調試,卻發現了很奇葩的問題:不能釋放鍵盤。html

跟蹤調試,發現只要代碼中一運行到resignFirstResponder(或者是endEditing)方法調用的地方,程序就崩潰。出現神通常的BAD EXEC錯誤。spa

 

將這句代碼註釋,一切OK,可是你就沒法收起軟鍵盤了。.net

在網上搜羅答案無數,只有一個答案是靠譜的:調試

 

http://www.dahuatu.com/1LypEbbMmn.htmlorm

 

接下來,讓咱們來演示一下這個Bug,你就會明白讓一個在iOS 8上運行正常的App崩潰是如此的容易。htm

 

新建工程。在View Controller上拖一個TextField和Button。爲Button建立一個IBAction鏈接:get

- (IBAction)freekb:(id)sender {it

   [self.view endEditing:YES];io

}class

其它代碼什麼都不要寫。運行程序(在iOS 9.1模擬器或設備上),點擊TextField,鍵盤彈出,點擊Button,鍵盤收起。一切OK,沒有任何問題。

 

如今咱們來看怎麼弄死它。實現一個Category,隨便你叫它什麼(好比test):

 

@implementation UIViewController(test)

 

- (void)dealloc{

}

 

@end

 

如你所見,只定義了一個空的dealloc方法,方法中什麼代碼也不用寫。

運行程序(在iOS 9.1模擬器或設備上),點擊TextField,鍵盤彈出,點擊Button,鍵盤收起。程序崩潰!刪除dealloc方法,再次運行,一切正常。

 

Ok,演示完畢,謝謝你們!

相關文章
相關標籤/搜索