1. HOME
  2. ブログ
  3. IT技術
  4. 【Swift】「Thread 1: signal SIGABRT」エラーが出るときの原因

【Swift】「Thread 1: signal SIGABRT」エラーが出るときの原因

「Thread 1: signal SIGABRT」は簡単に解決できます!

Swift(スウィフト)の基本も身に付き、エラーも解決できるようになってきた頃に現れるのが「Thread 1: signal SIGABRT」エラーです。

大体のエラーは、横に原因が書いてあるので、書いてある通りにコードを修正すれば解決できます。

Thread 1: signal SIGABRT」は、これ以外何も書いておらず、一体何がいけないのかさっぱりですよね。

ですが、「Thread 1: signal SIGABRT」は、原因さえ分かれば簡単に解決できるんです!

今回は、「Thread 1: signal SIGABRT」エラーの発生原因の一つである、ストーリーボードの接続が正しく出来ていない場合について説明していきます。

「Thread 1: signal SIGABRT」とは?

このエラーが起こるのは、ほとんどの場合、ストーリーボードが正しく接続されていないときです。

ボタンをタップしたときや、ビルドして画面が反映される前などに強制終了してしまうことがよくあります。

このエラーが厄介なのは、原因が特定しづらいことで、今から解説する原因ではない可能性もあります。

解説するにあたり、プログラムは「シンプルな ToDo リストアプリ」を使用していきます。

アプリの内容は、右上のナビゲーションアイテムをタップすると、アラートが表示されて ToDo にリストを追加できるアプリです。

シンプルなプログラムですが、原因が同じであれば、応用が効くのでご安心ください。

【※注意※】
コードの例では、原因の部分だけを書いて説明していきますので、実際の処理の内容はここでは書きません。ご了承ください。

ビルドした瞬間に「Thread 1: signal SIGABRT」

初めに、ビルドした瞬間に「Thread 1: signal SIGABRT」エラーが出てくるパターンを解説していきます。

まずは、普通に実装していきましょう。

コードその1

次のコードをビルドします。

ビルドした結果

成功しました。

コードその2

次に、一番上の変数と @IBOutlet を入れ替えてみましょう。

ビルドを実行しましたが、 @IBOutlettablView になっているため、ビルドできませんでした。

コードその3

次のように、 tablView を  tableView に修正し、ビルドしてみましょう。

ビルドした結果

「Thread 1: signal SIGABRT」エラーが出てしまいました!

なぜでしょう?

実は、間違えた name で一度ビルドしてしまうと、コード上で修正するだけではビルドできず、ストーリーボード上でも接続を切らなければいけません

実際に確かめてみると、接続が複数になっていることが確認できます。

そのため、ストーリーボード上の接続を全て切ってから、新たに正しい name で接続すれば、ビルドは成功するでしょう

まだわからない人もいるかと思いますので、次は画像と共に解説していきます。

上記の説明を画像で解説

Thread 1: signal SIGABRT」エラーが出ている状態では、ストーリーボード上の接続は、次のようになります。

「Referencing Outlets」で間違えた方の name を削除します。

これでビルドすると、「Thread 1: signal SIGABRT」エラーが出ることなく、立ち上げることができます。

ボタンを押したら「Thread 1: signal SIGABRT」

次は、ボタンを押した瞬間に「Thread 1: signal SIGABRT」エラーが出る原因について説明します。

まず、普通にボタンを押してみます。

ビルドした結果

アラートダイアログが表示されたので成功です。

name を変更したコード

次は、 AddButtonaddButton へと変更したコードです。

このコードでは、「Thread 1: signal SIGABRT」エラーが出ました。

@IBActionname をコード上で、勝手に編集してしまったのが理由です

name を編集したい場合は、一度、ストーリーボード上からも削除しなければいけません。

さいごに

Thread 1: signal SIGABRT」エラーが出てしまった場合は、どこでエラーが出ているのかを確かめ、その部分の接続を一旦切ってみると良いでしょう。

それでも解決できない場合は、理由が書いていますので、デバックエリアを確認してみましょう。

解説した原因以外にも、「Thread 1: signal SIGABRT」が出る原因はあるそうですが、私は遭遇したことがありません。

最後に、今回のまとめです。

  1. 「Thread 1: signal SIGABRT」が出たらまずは接続を疑う。
  2. 接続の name を変える場合は、一旦接続からやり直す。

この2つを気をつけておけば、大丈夫です。

ぜひ活用してみてください!

こちらの記事もオススメ!

書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア