株式会社スタジオザンビ

スマホメニュー

ホームページ制作・ウェブアプリ制作 株式会社STUDIOザンビ 帯広/十勝/北海道

ホームページ作成・webシステム開発からデジタルコンテンツまで、付加価値の高いデザインやWEBシステムをご提供いたします。

BLOGブログ. 業務日誌

Swiftで子クラスからコールバックの勉強

Swiftで子クラスからコールバックの勉強

Swiftでコールバックたくさん使うので勉強。
こんな書き方で正しいのだろうか。

//ViewController.swift
import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        //TestCallBack作成時にコールバック渡す
        var tcb:TestCallBack=TestCallBack(
            callback1: {
                (msg:String)->Void in
                self.testLog1(msg)
            },
            callback2: {
                (msg:String)->Void in
                self.testLog2(msg)
            }
        )

        tcb.testFunc("コールバックのテスト")
        //出力↓
        //テスト1:コールバックのテスト
        //テスト2:コールバックのテスト
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func testLog1(msg:String){
        println("テスト1:"+msg)
    }

    func testLog2(msg:String){
        println("テスト2:"+msg)
    }
}

そして子class
 
//TestCallBack.swift
class TestCallBack{

    //イニシャライザでコールバック受け取り
    var callback1:(String)->Void
    var callback2:(String)->Void
    init(callback1:(String)->Void,callback2:(String)->Void){
        self.callback1=callback1
        self.callback2=callback2
    }

    //コールバック使用テスト
    func testFunc(msg:String){
        callback1(msg)
        callback2(msg)
    }

}

正しい書き方知ってる方ご教授ください…。

  • ヒトコトどうぞ

    ※500文字以内

    ※スマートフォンなど画像認証がうまくいかない場合は、一度[変更]してからご入力ください。

    CAPTCHA Image

    英数字5桁(変更

    コメントありがとうございます、勉強します!

    コールバックは楽ですが、コールバック地獄になりやすいので、おとなしくファクトリーパターンを使ったほうがいいと思います!
    http://dev.classmethod.jp/references/ios-8-swift-design-pattern-factory-method/
    http://dev.classmethod.jp/smartphone/ios8-swift-design-pattern-abstract-factory/