So-net無料ブログ作成

Swift移行 [日常のあれやこれや]

連休に入ったけど、その間に量産用の測定機や例の評価装置なんかのソフトを書かないといけない。ずっと押してしまっている。Raspberry Piにも書くけどそれはCで粛々と進める。しかしホストにするmacOSにも大量に書く必要がある。もうmacOS用にはObjective-CではなくてSwiftで書きたいんだけど、全然慣れてなくて難しい。流用したいCやObjective-Cのコードとのやりとりもよく理解できてなくて、うまく行かない。どこがいけないんだかよくわからなくて非常に悩ましい。

Swiftを初めて見たときは、Objective-Cのランタイムやフレームワークをすっきりした(JavaScript風の)シンタクスで使うための手段ぐらいに思っていたんだけど、いつのまにかSwift4にまでなって、Objective-Cに比べてシンプルになった部分がいっぱいある。特に気に入ってるところといえば、参照するオブジェクトが一つに限られるオブジェクトはReference countingをしないですますところ(実際にどうしてるのかは知らないけど)。

「書き換えない」ことがわかってるオブジェクトでは参照先が増えたときには本体ではなくてそのコピーを渡す。一つからだけしか参照されないことが保証できればReference countingの必要はなく、参照元がなくなればなんの心配もなく自動的にリリースすればいい。Objective-CではすべてのオブジェクトがReference counterを持っていたけど、Swiftでは限られたオブジェクトだけ、つまり相互に参照しあう能動的なごく少数のオブジェクト(とクロージャ)だけが持っていればいい。SwiftではFoundationのオブジェクトはおそらくほとんどがその意味で「格下げ」され、Reference countingの呪縛から解放されて軽くなった。メモリは食うけど、効率的でかつ、長時間動作させる必要のあるアプリで致命的になるメモリリークの心配をずっと減らすことができる。

Swiftでも相互強参照を自動的に排除することはできないのでSwiftで書けば完全にメモリリークフリーになる、というわけではないけど、すばらしい。これもARCの解析能力のおかげだな。mutatingなpropertyを持ったオブジェクトはどうしてるのかとか、よくわからないところも多いんだけど、面白い。LLVMすごいな。

さっさとその恩恵を受けたいんだけど、この状態ではまたSwift移行は先送りになりそう。痛し痒しというところ。
            「いたしかゆし」
            「どっこいどっこい」
            「まっぱだか」
            「へこたれる」
            「もっちり」
            「こばら」
ジュジュちゃんの「気になる言葉探し」かよ。
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

メッセージを送る