![見出し画像](https://assets.st-note.com/production/uploads/images/105148247/rectangle_large_type_2_f0aa43ebd45599203b1a2aa67b5bb53e.png?width=1200)
【Console Application】ファイルとデータベース 292【学習記】
今回の概略
紛らわしい参照名を直すも変わらず…😞
#学習記 #Objective_C
#EXC_BAD_ACCESS
【Console Application】ファイルとデータベース【学習記】
仕様
https://note.com/sayka/n/nb8a67fa90a64?magazine_key=m7bb64c6a359f#br1mB
仕様
レコード
・レベル
1-12
・難易度
b,n,h,a,l
・曲名
・ランプ
-,x,a,e,c,h,e,f
オプションスイッチ
-u file.csv # 更新(略値)
ファイル名だけ指定した場合更新処理と見做す
-d file.csv # 削除
-p # csv 出力(略値)
何も指定せずに起動した場合出力処理と見做す
-v # バージョン
-h # ヘルプ
----備忘録
(現在無し)
前回の粗筋
実行時に EXC_BAD_ACCESS が出る…😞
対策
何が気に食わないのかデバグ開始よー🤪
![](https://assets.st-note.com/img/1683655740385-c5HQPj9GCR.jpg)
毎度の事だけど前回の記事を上げた後の隙間作戦立案で気が付いたのよ🤔
これ、 '_dic' って名前が良くないんじゃないの?って😑
property の場合 'self.dic' が _dic で使える言語で _dic って名前、危ないよね?🤔
しかも const で用意してるグローバルも _dic 🙄
調べても良いんだけどまずこれを是正してみるお🤤
![](https://assets.st-note.com/img/1683655754313-9bk7nt5K4f.jpg)
まずは property の方を単なる 'dic' にして const は 'TVDIC' という明らかに違う名前へ🤤
![](https://assets.st-note.com/img/1683655768695-jqVYcBXdc3.jpg)
これなら紛らわしい参照はゼロの筈…😑
では👇
![](https://assets.st-note.com/img/1683655780048-44JUdkStlz.jpg)
さよか…😞
ただこれ、よく見ると左ペインで TypeVal が無限呼出…になってる?🤔
EXC_BAD_ACCESSの原因
https://katz-lifehack.hatenablog.com/entry/2013/08/08/024018
EXC_BAD_ACCESSが発生する場合は大きく3つのケースがあるらしい。
You will get EXC_BAD_ACCESS in 3 cases:
1.An object is not initialized
2.An object is already released
3.Something else that is not very likely to happen
大抵、解放されたオブジェクトにアクセスしてる
参照先が無い…?
無限再帰呼び出しでEXC_BAD_ACCESS
https://qiita.com/shtnkgm/items/82e1b51a56378af69b17
この記事は Swift だけど Xcode の吐くバイナリなので恐らくこれが合致してる挙動の方の EXC_BAD_ACCESS だと思う🤔
自動変数を初期化しなかったのが原因で EXC_BAD_ACCESS
https://xcatsan.blogspot.com/2009/09/excbadaccess.html
………😞
とりあえず main でブレイク貼ったら止められるのかを確かめるぽ🙄
![](https://assets.st-note.com/img/1683655901135-D3WvKHE14U.jpg)
ほぼほぼ main の初っ端にブレイク貼ってるのにブレイクが来ないのでどうやらコードを走らそうとする前段階で TypeVal の暴走が置きてるっぽい😞
次回は
const の変数をローカル化とか static 化してみようかなと思う🤔
単に値を取り出す時に nil ってて滑り落ちてるかもだから確実に実体を与えたら動くんじゃないかなって気がしてる😑