swift线程间通讯

//
//  ViewController.swift
//  多线程
//
//  Created by admin on 16/2/17.
//  Copyright © 2016年 jin. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imageView: UIImageView!
    var ticketsNumber = 20
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.performSelectorInBackground("getImage", withObject: nil)
    }
    func getImage()
    {
        // oc子线程里面的runloop默认不开启, 也就意味不会自动创建自动释放池, 子线程里面autorelease的对象 就会没有池子可放。 也就意味后面没办法进行释放。 造成内存泄露
        // 所以需要手动创建,好像不是的
        print(NSThread.currentThread())
        let data = NSData(contentsOfURL: NSURL(string: "http://f.hiphotos.baidu.com/image/pic/item/7aec54e736d12f2eec17b2b54bc2d562843568d0.jpg")!)
        // 更新ui要在主线程,所以这里把获取到的图片去主线程赋值
        //self.performSelectorOnMainThread(Selector("assignImage:"), withObject: UIImage(data: data!), waitUntilDone: false)
//        self.performSelector(Selector("assignImage:"), onThread: NSThread.mainThread(), withObject: UIImage(data: data!), waitUntilDone: false, modes: [NSRunLoopCommonModes])
        self.performSelector(Selector("assignImage:"), onThread: NSThread.mainThread(), withObject: UIImage(data: data!), waitUntilDone: false)

    }
    class Jin {
        deinit
        {
            print("对象销毁啦。。。")
        }
    }
    func assignImage(image:UIImage)
    {
        print(NSThread.currentThread())
        self.imageView.image = image
    }
}

标签: swift, iOS多线程, NSThread

添加新评论