一個iOS9 Bug:弄死iPhone很容易

來源:互聯網
上載者:User

標籤:


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

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

 

將這句代碼注釋,一切OK,但是你就無法收合軟鍵盤了。

 

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

 

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

 

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

 

建立工程。在View Controller上拖一個TextField和Button。為Button建立一個IBAction串連:

- (IBAction)freekb:(id)sender {

   [self.view endEditing:YES];

}

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

 

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

 

@implementation UIViewController(test)

 

- (void)dealloc{

}

 

@end

 

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

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

 

Ok,示範完畢,謝謝大家!

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

一個iOS9 Bug:弄死iPhone很容易

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.