【Xcode(Objective-C)】謎の実行時エラー?ありえないタイミングで処理が動いてnilで落ちる・・・

Xcode(Swift/Objective-C)における、技術メモです。
自身の脳内整理・備忘録を兼ねてメモしています。

謎の現象?でドハマりしたので、忘れないようにメモしておきます。
原因や再現性も不明であるため、あまり参考にはならないかもしれませんが・・・

※もし何かございましたら、下部「コメント」欄にいただけるとありがたいです。

現象

動作環境

Xcode 11.3.1
使用言語はObjective-C
iPad mini (11.3.1) 実機で稼働確認

現象

ある程度コーディングされているソースに対して、「ふつうに UIButton のOutlet接続」を追加し、アプリを起動すると「nil」で必ず落ちるようになりました。

該当のUIButtonは、もともとタップした時のアクションを実装しており、
デバッグで見る限り、どうもnilで落ちている箇所がこの「タップした時のアクションの処理でnilを受けてしまい落ちた」と見えます。

また、同種類の処理(UIButton)は6つあり、そのうち3つはうまく動作、(コメントアウトしながら確認したところ)あと3つは同じ落ち方をしました。

不可思議なのが、以下の点です。

  • 「タップした時に呼ばれる関数」であるにも関わらず、呼ばれてnilで落ちる
    (=nilの状態で呼ばれるわけがない箇所なのに、処理が走っている)
  • 同種類の処理で、うまくいくパターンといかないパターンがある

XcodeやiPad miniを再起動しても状況は変わらずでした。(100%落ちる)

解決策

解決策と言っていいのかもよく分かりませんが、、、

うまく処理ができなかった3つのパターンについて、InterfaceBuilderとの接続(IBOutlet、IBActionの両方)を、変数名を変更して作り直しました。
(中身の処理は変更なし)

それだけでうまく動作するようになりました。

Xcodeのバグでしょうか・・・?
※これだけでほぼ半日費やしました、、、( ; _ ; )

レアすぎて?再現するか不明、ググる検索キーワードも難しい、、、といった現象ですが、もし何かのお役に立てればと・・・

               
           

   
株式会社グロリア
石黒直樹
         
最後までお読みいただき、ありがとうございました!

以下も、ぜひご活用ください^^
情シスの定石
メルマガ
Site Access Log by HTTP Header
Site Access Log by HTTP Header
デジタル活用塾360

    >【発売中】情シスの定石(技術評論社)

    【発売中】情シスの定石(技術評論社)


    情報システム部門の担当者が「絶対に」押さえるべきノウハウを体系化!

    ・システムの企画から廃止まで、情シスが「何をすべきか」「どう動くべきか」がわかる
    ・失敗につながる「見えない要因」を明らかにし、成功に導くためのポイントを解説
    ・情報システム開発に携わるすべての人の必読書

    ■ こんな方にオススメ
    現役「情シス」/ 異動で「情シス」へ / 転職で「情シス」へ
    部下・新人育成にお悩みの方 / 業務部門の方
    経営者 / 開発ベンダ勤務の方 / 就活生

    CTR IMG