![見出し画像](https://assets.st-note.com/production/uploads/images/118781657/rectangle_large_type_2_1dba1b383b850ec648155fd9bc5329ba.png?width=1200)
【Console Application】ファイルとデータベース 358【学習記】
今回の概略
ドキュメントの移植は いつも忘れる😞
Swift はデストラクタが定義可能🤔
ただし意図的にプロパティを削除するにはオプショナル型にしていないとできない🙄
プロパティを個別にオプショナル型にするよりクラスをオプショナル型にして内部の強参照に気を配る方が簡単…らしい🤔
#学習記 #Swift
#デストラクタ #deinit #ARC
【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 # ヘルプ
----備忘録
public 装飾子 → open
列挙をカスタムエラーへ
parseCsv の空行問題
Swift の args は OC 同様 [引数+1] 個
前回の粗筋
init 群をやっつけた🤪
略値設定が有るとオーバーロードを書く数が減って楽だと思う等🤤
DBAccessor
前回終わりにチラ見した時は loadTable の前に何かこまかいのが有った気がするけどそのあたりから😑
の前に
![](https://assets.st-note.com/img/1697200463212-aW2jua5c5b.jpg)
![](https://assets.st-note.com/img/1697200463159-I3r5ucBMDT.jpg)
最早常習となってしまった「の前にドキュメント移植」…😞
一応イイワケするとね? OC ってヘッダっていう「定義ファイル」が別になってて、そっちにドキュメント書かないと他から参照できないのね?😑
でも移植は実装の方だけ見てれば良いんだけどここにドキュメントが無いのよ😞
で、移植が終わって次に取り掛かる時にヘッダ見てドキュメント移植忘れてるって気がつくって話🙄
まぁ、そういうネタとして嵩増しできるから良いのかなと思わなくもない🤪
disconnect
OC の時は nil 放り込んで終わりだったけど Swift は Kotlin 同様 null 安全方式だからここは Kotlin に倣うべきかしらね🤤
![](https://assets.st-note.com/img/1697200482218-OorguCStgX.jpg)
DBC の disconnect だけ呼んで終わってる🤪
はて?それじゃそもそも Swift のメモリ管理はどうなってるぽ?🤔
基本はガベコレ任せなのは分かるけど😑
Swiftのメモリ管理
https://swift.codelly.dev/guide/メモリ管理/
デイニシャライザ は、インスタンスが解放される直前に呼び出されます。
deinit キーワードを使用してクラス内に定義します。
おや?どうやら Swift はデストラクタが有るっぽい🤤
記事の冒頭を見る限りだと ARC が云々と書かれててまぁ仕組みとしては OC の物が内部的に支えてると考えて差し支えなさそう🤔
………
でもこの記事だけだと、クラスをオプショナルにしないと話が通らない😑
プロパティの中身を開放する方法が有れば………🙄
………
weak とか unowned での弱参照の話とかしか出てこないっぽ😑
どうやら Java や OC の様な変数に null を入れてメモリ解放をしたいならオプショナルにしないとならないっぽい🙄
ええ…今から全部オプショナルに?できねぇ!🤪
![](https://assets.st-note.com/img/1697200504640-T46UAliAPg.jpg)
要するに Kotlin と同じ🤤
次回は
![](https://assets.st-note.com/img/1697200516620-0Eo38jv1GE.jpg)
loadTable 🤤