2015-10-14 3 views
1

В настоящее время я пытаюсь оптимизировать фоновый поток для выполнения основного потока в моем приложении.Создание инфиксного оператора с параметром

Как я делаю это так:

import Foundation 

infix operator ~> {} 

private let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0) 

func ~> (backgroundClosure:() ->(), mainClosure:() ->()) { 
    dispatch_async(queue) { 
     backgroundClosure() 
     dispatch_async(dispatch_get_main_queue(), mainClosure) 
    } 
} 

, который позволил бы мне сделать что-то вроде:

{ println("executed in background thread") } ~> { println("executed in main thread") }

сейчас ... Я хотел бы расширить эту функциональность потенциально быть в состоянии dispatch_after в основной поток, так что, возможно, я хочу, чтобы его назовешь через 0.25 секунд или что-то в этом роде.

Есть ли способ достичь этого, передав параметр каким-то образом?

В идеале, я бы в состоянии осуществить что-то вроде backgroundClosure ~>(0.25) mainClosure, но я сомневаюсь, что это возможно

ответ

2

Только предложение:

infix operator ~> {} 

private let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0) 

func ~> (backgroundClosure:() ->(), secondParam: (delayTime:Double, mainClosure:() ->())) { 
    // you can use the `delayTime` here 
    dispatch_async(queue) { 
     backgroundClosure() 
     dispatch_async(dispatch_get_main_queue(), secondParam.mainClosure) 
    } 
} 

Как использование:

{ print("executed in background thread") } ~> (0.25, { print("executed in main thread") }) 
+0

О, это на самом деле отличная идея. Я попробую. – David

0

попробовать это:

private let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0) 

infix operator ~>{ associativity left precedence 140} 

func ~> (backgroundClosure:()->() , mainClosure:()->()) { 
dispatch_async(queue) {() -> Void in 
    backgroundClosure() 
    dispatch_async(dispatch_get_main_queue(), {() -> Void in 
     mainClosure() 
    }) 
}} 
+1

Как это использовать? – t4nhpt

Смежные вопросы