マツシタのお勉強

iOSのNSFileManagerについて

NSFileManager API Reference

NSFileManager - Foundation | Apple Developer Documentation

なぜNSFileManagerが気になるか

SDWebImageのソースコードを読んでいたらキャッシュの保存場所が2つあった。MemoryとDiscだ。Memoryにキャッシュを保存する場合はNSCacheというクラスを用いて保存している。Diskに保存する場合はNSFileManagerというクラスを使用していた。2つの違いが知りたい。

NSFileManagerの概要

ファイルやディレクトリの作成、保存、削除、移動、コピーなどをの操作を担うクラス。

ファイルの操作は並列処理により行われる

https://developer.apple.com/jp/documentation/FileSystemProgrammingGuide.pdf

ファイル関連の操作にはハーディクスとの相互作用が伴い、ほかの大半の操作よりも速度が遅くなるため、iOSのファイル関連の大半のインタフェースは並列処理を前提に設計されいます。

確かに、SDWebImageのソースコードを見るとNSFileManagerを使ってディスクに書き込む処理は非同期で行われている。

より SDWebImage/SDImageCache.m at master · rs/SDWebImage · GitHub