Unmanaged で詰まった
LSCopyApplicationURLsForURL()を使って、拡張子判別で実行可能なアプリ一覧を
取得しようとしたら、返される値が Unmanaged<cfarray> だと。
値を取り出す方法が分からず、キャストすると
'Unmanaged<cfarray>' is not convertible to 'CFArray'
とおこられる。google先生で調べても詰まってる人が多いのか、検索の仕方が悪いのか
より良い返事が返ってこない
そもそも Unmanaged って何?って思って調べたら、出てきたよ
Using Swift with Cocoa and Objective-C: Working with Cocoa Data Types の Unmanaged Objects って項目
takeUnretainedValue() か takeRetainedValue() 使って取り出せってことなのかな
とりあえず
let unmanagedAppList = LSCopyApplicationURLsForURL( URL, kLSRolesAll )
let appList = unmanagedAppList.takeUnretainedValue()
println( appList )
って書いたらちゃんととってきてくれたよ
takeUnretainedValue()使えって書いてある最後に
You can also invoke the
retain()
, release()
, and autorelease()
methods on unmanaged objects, but this approach is not recommended.って書いてあるけど、retain()やらrelease()やらする必要あるんかいね
分からん