Skip to content

Instantly share code, notes, and snippets.

@stanfeldman
Forked from Inferis/ViewController.swift
Last active September 13, 2018 15:40
Show Gist options
  • Save stanfeldman/0f37794b369eb6da98cc to your computer and use it in GitHub Desktop.
Save stanfeldman/0f37794b369eb6da98cc to your computer and use it in GitHub Desktop.
import Foundation
class dispatch
{
class async
{
class func bg(block: dispatch_block_t) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), block)
}
class func main(block: dispatch_block_t) {
dispatch_async(dispatch_get_main_queue(), block)
}
}
class sync
{
class func bg(block: dispatch_block_t) {
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), block)
}
class func main(block: dispatch_block_t) {
if NSThread.isMainThread() {
block()
}
else {
dispatch_sync(dispatch_get_main_queue(), block)
}
}
}
class after {
class func bg(when: dispatch_time_t, block: dispatch_block_t) {
dispatch_after(when, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)!, block)
}
class func main(when: dispatch_time_t, block: dispatch_block_t) {
dispatch_after(when, dispatch_get_main_queue(), block)
}
}
}
import UIKit
import QuartzCore
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel
@IBOutlet weak var counter: UILabel
override func viewDidLoad() {
super.viewDidLoad()
dispatch.async.bg {
var count = 0;
for index in 0..10000000 {
dispatch.sync.main {
self.counter.text = "\(index)"
}
}
}
dispatch.after.main(2) {
NSLog("in main after 2 seconds")
}
}
@IBAction func clickety() {
label.text = NSDate.date().description
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment