swift - 回调
一、回调函数
在swift中有同步和异步两种形式的回调函数:
主线程不能被block住,否则 同步回调函数有时用于作为delegation的替代品。 二、同步回调函数的例子func C( x : Double,fn : (Double -> Double) ) -> Double?
{
....
return fn(x)
}
//调用者A
let ret = C(0.01,fn : B)
例子中fn是一个回调函数,由sync的用户动态地决定sync操作触发什么函数 三、异步回调函数(一)let P = NSBlockOperation() {
let res = C(0.01){B}
let Qres = NSBlockOperation() {
if let p = ret {...}
else {...}
}
NSOperationQueue.mainQueue().addOperation(Qres)
}
let Q = NSOperationQueue()
Q.addOperation(P)
效果: 四、异步操作的回调函数(二)func C(x : Double,fn : Double -> Double,completion : Double? -> Void) {
let P1 = {
...
ret = fn(x)
}
let P2 = {
completion( ret )
}
NSOperationQueue.mainQueue.addOperationWithBlock(P2)
}
//调用
C(0.01,fn : B,completion : comp)
1.把调用回调函数的过程与结果分别封装到两个operation中 2.在其它线程执行P1 3.P1结束后在主线程执行P2 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |