Thread1:Program received signal:"SIGABRT"

Thread1:Program received signal:"SIGABRT"

這是由Xcode4.6.2產生的project,修改Deployment Target 5.0後,Product/Run在iPhone5.0 simulator或iPad5.0simulator時,所產生的錯誤。若Product/Run在iPhone5.0 simulator或iPad5.0simulator時,不會有問題。

問題的情形如下圖:

SIGABRT

問題所在:iOS6.0開始支援Autolayout,當Deployment Target改為iOS5.0後,iOS5.0並不支援Autolayout,因而當機。而且Autolayout的設定是自動隱藏在storyboard裡面,不易發現,

解決方法:

  1. 先找到所有的.storyboard檔案,點某個.storyboard檔,找到如下圖。
    點storyboard後的畫面
  2. 去掉Autolayout:見上圖,點Book Root View Controller/Show the File Inspector,找到Interface Builder Document下本來是勾選的Use Autolayout,去掉勾選。但是,若現在Product/Run,會發現螢幕顯示不對,這是因為AutoResize沒設定好。
    不勾選Autolayout
  3. 保持AutoResize的第一步,改Size為FreeForm:點Book Root View Controller/Show the Attributes Inspector,找到Simulated Metrics下的Size,將其改為Freeform。
     Freeform
  4. 保持AutoResize的第二步,改View:點Book Root View Controller下的view,㸃Show the Size inspector,找到Autosizing(如下圖),將其改為如Autosizing上的樣子(修改方法:用滑鼠點即可)。注意:這個步驟相當於BookRootViewController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;....等等。注意:對所有的view都需做這個動作。
    Autosizing
  5. 對所有的.storyboard檔內的所有其他的Controller(例如Book Data View Controller)及其下的所有的view做上2,3,4動作。