未来研

iPhoneアプリ開発とかプログラミングとかの話題。

SwiftでiOS SDKの「複数の引数がある@selector」を使う方法。

たまにはプログラミングの話題を。先日、ktanakaさん主催のSwiftのもくもく会に参加しました。

Swiftを触っているktanakaさんから質問を受けて、いろいろと一緒に調べたりもしました。(実はこの時に初めてSwiftのコードを見たくらいの初心者なんですけども...まあこれまでのObj-Cの知識とかもあるのでそれでなんとかかんとか。)

Swiftで@selectorを使用する関数を使う方法。

で、この時にハマったのはSwiftで複数の引数を持つ@selectorを使用する関数を使う方法。 @selectorの引数が1つのサンプルは結構書いてあるんですけど、UIImageWriteToSavedPhotosAlbum()の第3引数のような複数のはなかなか載ってないんですよね。

答えから言うと、こんな感じでokみたいでした。

SwiftCam/SwiftCam/ViewController.swift at master · ktanaka117/SwiftCam · GitHub

// 呼ぶ側
UIImageWriteToSavedPhotosAlbum(image, self, "imageDidFinishSavingWithErrorContextInfo:error:contextInfo:", nil)

// 呼ばれる側
func imageDidFinishSavingWithErrorContextInfo(image: UIImage!, 
    error: NSErrorPointer, 
    contextInfo: CMutableVoidPointer){
}

Objective-Cの時と一緒なんですけども、なぜかハマってしまったのでした...。