File Manager由来のAPIがDeplecatedになっていた

常日頃、書いているコードは古いOSにも対応させるためにSDKは古いバージョンの使うことが多いのですが、今回、たまたま、最新のOS X SDK 10.8で書く機会があり、古いコードを最新の環境に持ってきたときに気がついたことがあります。
File Manager由来のAPIが10.8でDeplecatedになっていました。Mac OSのファイル操作系のAPIは、何度もバージョンアップというか、置き換わってきました。そして、少し前の最新はFSOpenForkなど、FSから始まっているAPIでした。その少し前は、FSpから始まっているもの、さらに前は。。。というように何度も置き換わってきました。そして、今回、10.8系ではFS系のものがDeplecatedになりました。
では、どれを使うべきかというと、Objective-Cではあれば、NSFileHandleやNSDataなどのクラスに用意されたメソッドを使用する。CやC++であれば、POSIX/BSDレイヤーの関数群を使用します。
POSIX/BSDレイヤーの関数群はかなり昔からあるもので、OS X自身はUNIXなのでこれらが使えるのは当たり前のことですが、ちょっと新鮮さを覚えました。新たなラッパーを作るよりも大本を使った方がオーバーヘッドもなく効率的です。また、POSIX系のAPIを使うと移植もやりやすくなるでしょう。また、POSIX系のファイル操作APIは古いOSでも対応しています。
このオーバーヘッドが馬鹿にならないときもあって、ファイルシステムの種類によってはFS系使うと遅いのに、BSDのAPIを使うと早いなんてことも実際に経験しています(HFS+とかだと経験無いですけど、その他のファイルシステムで条件が揃うと10倍くらい変わるときがあります)。
 

関連記事

  1. MOSADeN ONLINE 第24回の記事を入稿しました

  2. RKDetailDesign Nightly Build 162.00…

  3. MOSADeN Online 第19回の原稿アップしました

  4. LionにphpMyAdminをセットアップする

  5. Outlook 2007 が突然起動しなくなってしまったときの解決方法…

  6. Debian on IBM eServer xSeries 205

最近の著書

  1. 基礎から学ぶ SwiftUI

最近の記事

  1. 2020.10.21

    GitLabへの移行
  2. 基礎から学ぶ SwiftUI
  3. 基礎から学ぶ SwiftUI