CS193笔记 第八讲 多线程和文本框

本讲简介:多线程和Text Filed

本讲继续上一讲的demo。

多线程,但主要是和queue打交道。系统会协调thread去处理这些queue中的任务

线程/Queue的种类:
线程主要有三种,

Main Thread, 主线程,又称为UI线程。

Global Thread:

User created thread: Very rarely.
use this only if you have multiple, serially dependent activities

thread 和 queue 的关系

QOS

同步 vs 异步

GCD(Grand Central Dispatch)

Operation API vs DispatchQueue API

 

  1. private func fetchImage() {
  2. if let url = imageURL {
  3. DispatchQueue.global(qos: .userInitiated).async { [weak self] in
  4. let urlContents = try? Data(contentsOf: url)
  5. if let imageData = urlContents, url == self?.imageURL {
  6. DispatchQueue.main.async {
  7. self?.image = UIImage(data: imageData)
  8. }
  9. }
  10. }
  11. }
  12. }

第六讲留了一个课后作业,使用delegate的答案在这儿

这儿是在awakeFronNib()中设置的delegate。另外self的splitViewController成员是通过extension加入的,并不在原本的UIViewController的定义里。


override func awakeFromNib() {
super.awakeFromNib()
self.splitViewController?.delegate = self
}

// MARK: - SplitViewController Delegate
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
if primaryViewController.contents == self {
if let ivc = secondaryViewController.contents as? ImageViewController, ivc.imageURL == nil {
return true
}
}
return false
}

文本框 (Text Field)
文本框本身比较简单就是能显示,也能接受用户的输入。重点是如何处理键盘。另外最后还提了一句

你可能感兴趣的:(CS193笔记 第八讲 多线程和文本框)