Appleの公式iOSチュートリアル「FoodTracker」で delegate = self のところで Thread 1: exc_bad_instruction (code=exc_i386_invop subcode=0x0)
Swift3.2使用です。
テキスト入力のコールバック設定のところでビューにselfを代入しているところでクラッシュしました。
該当のソースコードは
override func viewDidLoad() { super.viewDidLoad() // Handle the text field’s user input through delegate callbacks. nameTextField.delegate = self }
クラッシュのメッセージは下記の通りです。
ソースコードは
Thread 1: exc_bad_instruction (code=exc_i386_invop subcode=0x0)
エラーログは
“fatal error: unexpectedly found nil while unwrapping an Optional value”
“unwrapping an Optional value”
と書いてあるのでオプショナル型の記述方法が何か悪かったのだろうかと最初思いましたが、
それは関係なく(そもそも接続時に勝手に設定されるし)
nameTextFieldが定義してあるにも関わらずnilになっているのはStoryboardからの接続が
上手く出来ていないためでした。
チュートリアル通りにやったつもりだったんですが、いじっているうちに変なことをしたようです。
@IBOutletの接続の部分をやり直してクラッシュが解決しました。
今回検索してこちらのOptional型についてのいい説明に出会いました。
是非ご覧ください。
stackoverflow.com
チュートリアルの該当箇所は
↓の章の一番下あたりです。
https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/ConnectTheUIToCode.html#//apple_ref/doc/uid/TP40015214-CH22-SW1