Supportへのパスを得るTakeba.mehttp://takebayashi.asia/に移転しました。このブログは今後更新されません。共有Cocoaには、NSSearchPathForDirectoriesInDomains()という便利な関数がある。この関数を使えばMacOSXの特別なフォルダへのパスを取得することができる。YES)とすれば、/Users/username/Libraryというパス(を含んだNSArray)を得られる。Supportへのパスを取得できないらしい。Tigerであれば、引数にNSApplicationSupportDirectoryを渡してやればいいんだけど、Pantherではこれが使えない。Supportのパスを得るにはCarbonのAPIを使わなければいけないらしい。使ったことないよ、Carbon。パスの取得にはCarbonのFSFindFolder()っていう関数を使うらしい。引数は4つあって、最初のkUserDomainは上でいうNSUserDomainMaskにあたるもの(?)。kApplicationSupportFolderTypeはNSApplicationSupportDirectoryだな。3番目の引数は、ディレクトリが存在しなかった場合にディレクトリを作成するかどうかを指定する。作成する場合はkCreateFolderを、作成しない場合はkDontCreateFolderを渡す。最後にFSRefのポインタを渡す。このポインタへディレクトリのパスが格納されるわけだ。このFSRefってのはファイルやディレクトリへの参照を表すもので、AppleScriptでいうaliasクラスだ。FSRefはCFURLCreateFromFSRef()という関数を使ってCFURLRefに変換することができる。ここまでくればあとは簡単。bridgeのおかげでCFURLRefはNSURLとして扱える。&fileRef);あとは、-relativePathメソッドでパスを得ればOKだ。