使用闭包

时间:2016-04-29 12:36:29

标签: ios swift closures block

检查以下示例代码

@IBAction func turnOnLightTapped(sender: AnyObject) {
    turnOnLight { (turnON, error) -> Void in
        if turnON {
            // Turn on task - activity performed for 8 seconds
        }
    }
}

@IBAction func turnOffLightTapped(sender: AnyObject) {
    turnOffLight { (turnOFF, error) -> Void in
        if turnOFF {
            // Turn off task - activity performed for 1 second
        }
    }
}

func turnOnLight(completion: (turnON: Bool, error: NSError?) -> Void) {
    // Web call - 3 seconds
    completion(turnON: true, error: nil)
}

func turnOffLight(completion: (turnOFF: Bool, error: NSError?) -> Void) {
    // Web call - 3 seconds
    completion(turnOFF: true, error: nil)
}

我有两个UIButton s是相同的UIViewController - 一个打开灯,另一个打开灯。每个动作都有自己的时间来获得响应和自己的时间来执行UIactivity(评论)。

说,我点击TurnON button。我需要3秒钟才能从服务中获得响应,并将数据移交给完成块。完成块将执行任务8秒。

说,在得到响应之后,即当TurnON完成关闭时,我点击TurnOFF按钮。总共在4秒内完成TurnOFF活动。但是,TurnON活动没有被取消,在几秒钟内,灯将打开,这不应该发生。

处理它的最佳方法是什么?我可以做一些黑客攻击,disable userInteraction,旗帜等等。但是什么是专业方式?有没有办法取消关闭任务?

我担心的是取消/停止关闭activity,以及启动另一个activity时。

0 个答案:

没有答案