見出し画像

【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 の前に何かこまかいのが有った気がするけどそのあたりから😑


の前に

最早常習となってしまった「の前にドキュメント移植」…😞
一応イイワケするとね? OCObjective-C ってヘッダっていう「定義ファイルヘッダーファイル」が別になってて、そっちにドキュメント書かないと他から参照できないのね?😑
でも移植は実装の方だけ見てれば良いんだけどここにドキュメントが無いのよ😞
で、移植コトが終わって次に取り掛かる時にヘッダ見てドキュメント移植忘れてるって気がつくって話🙄

まぁ、そういうネタとしてかさ増しできるから良いのかなと思わなくもない🤪


disconnect

OC の時は nil 放り込んで終わりだったけど Swift は Kotlin 同様 null 安全方式だからここは Kotlin に倣うべきかしらね🤤

Kotlin 版

DBCDBControllerBase の disconnect だけ呼んで終わってる🤪

はて?それじゃそもそも Swift のメモリ管理はどうなってるぽ?🤔
基本はガベコレOC式ならaoutrelease任せなのは分かるけど😑

Swiftのメモリ管理
https://swift.codelly.dev/guide/メモリ管理/

デイニシャライザ は、インスタンスが解放される直前に呼び出されます。
deinit キーワードを使用してクラス内に定義します。

おや?どうやら Swift はデストラクタが有るっぽい🤤
記事の冒頭を見る限りだと ARCAutomatic Reference Counting が云々と書かれててまぁ仕組みとしては OC の物が内部的に支えてると考えて差し支えなさそう🤔

………

でもこの記事だけだと、クラスをオプショナルnil 許容型にしないと話が通らない😑
プロパティメンバ変数の中身を開放する方法が有れば………🙄

………

weak とか unowned での弱参照の話とかしか出てこないっぽ😑
どうやら Java や OC の様な変数に null を入れてメモリ解放をしたいならオプショナルにしないとならないっぽい🙄

ええ…今から全部オプショナルに?できねぇ!🤪

要するに Kotlin と同じ🤤


次回は

loadTable 🤤

この記事が気に入ったらサポートをしてみませんか?