2016-11-24 14 views
0

私は即座に新しく、パラメータ型UnsafeMutablePointerを持つObjC関数で作業しようとしています。私はUnsafeMutablePointerまたはUnsafeMutableRawPointerで作業することに関する多くの記事を読んでいますが、まだ動作させることができませんでした。機能は次のとおりです。
FUNC AXUIElementCopyAttributeNames(_エレメント:AXUIElement、_名:UnsafeMutablePointer) - > AXError
が、私も正確な機能のための質問を見つけましたが、答えはここに迅速3で、それ以上動作するようには思えないが、いくつかあります私が試したことはうまくいかなかった。またUnsafeMutableRawPointerまたはUnsafeMutablePointerでのObjC関数の操作Swiftのパラメータ?

var ptr : Unmanaged<CFArray>? = nil 
AXUIElementCopyAttributeNames(element, &ptr) 

var names:CFArray? = nil 
        AXUIElementCopyAttributeNames(element, UnsafeMutablePointer(names)) 

var names:CFArray? = nil 
AXUIElementCopyAttributeNames(element, UnsafeMutablePointer<CFArray>(Unmanaged.passUnretained(names).toOpaque())) 

、スウィフト3にObjC機能での作業に私の固体把握を与えるだろう良いチュートリアルはありますか?迅速に欠けているアピスがまだたくさんあるようだ。
ありがとうございました!

+0

私はスウィフト3用http://stackoverflow.com/questions/25124002/how-to-handle-unsafepointerunmanagedcfarrayを更新しましたそれは助けになるのだろうか? –

+0

@マーティンR - それは完全に働いた!回答として投稿すると、私はそれを受け入れることができます。どうもありがとうございます! – jl303

+0

@Martin R - あなたはおそらくこれに対する答えも知っているでしょう。あなたは気になりますか?これは、ObjC関数でCFTypeRefからSwift Stringを取得することに関連しています... http://stackoverflow.com/questions/40784738/ – jl303

答えて

0

AXUIElementCopyAttributeNamesはもう管理されていないCFArray へのポインタを取ることはありません。

let element: AXUIElement = ... 

var cfArray: CFArray? 
let error = AXUIElementCopyAttributeNames(element, &cfArray) 
if error == .success, let names = cfArray as? [String] { 
    // names is [String] array ... 
} 
関連する問題