【问题标题】:Swift: Return boolean in GCD Completion BlockSwift:在 GCD 完成块中返回布尔值
【发布时间】:2014-11-10 15:38:46
【问题描述】:

我有一个用 Swift 编写的函数。我希望完成块返回一个布尔值。我该怎么做呢?我正在使用 Grand Central Dispatch。

func myFunc() -> Bool 
{
    var success:Bool = false 

    // code here 

    dispatch_async(dispatch_get_main_queue(), { 
        return success
        )}
    )}
}

谢谢!

【问题讨论】:

    标签: ios xcode swift concurrency grand-central-dispatch


    【解决方案1】:

    处理这种异步性质的标准原因不是返回值,而是传入完成处理程序:

    func myFunc(completion:(success: Bool) -> ()) {
        var success:Bool = false
    
        // code here
    
        dispatch_async(dispatch_get_main_queue()) {
            completion(success: success)
        }
    }
    

    然后使用它:

    myFunc({ (success) in
        // ...
    })
    

    【讨论】:

      【解决方案2】:

      更快捷的方式(Swift 5):

      func myFunc(completion: @escaping (Bool) -> Void) {
         var success = false
      
         // code...
      
         completion(success)
       }
      }
      

      用法:

      myFunc { success in
          if success {
              // code ...
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        • 2013-08-18
        • 2015-02-17
        • 1970-01-01
        相关资源
        最近更新 更多