-
(iOS) OperationQueue를 활용하여 비동기 프로그래밍 해보기Programing Language/iOS(Swift) 2019. 10. 28. 15:46728x90반응형
비동기 작업을 할때는 OperationQueue를 호출하여 그 안에 실행할 코드를 친다.
// // ViewController.swift // AsyncExample // // Created by Ik ju Song on 2019/10/28. // Copyright © 2019 Ik ju Song. All rights reserved. // import UIKit class ViewController: UIViewController { @IBOutlet weak var image_view: UIImageView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } @IBAction func downloadBtn(_ sender: Any) { //https://image.shutterstock.com/image-photo/mountains-during-sunset-beautiful-natural-600w-407021107.jpg let image_url : URL = URL(string : "https://image.shutterstock.com/image-photo/mountains-during-sunset-beautiful-natural-600w-407021107.jpg")! /* Data.init 함수를 사용할때 어떠한 설정을 하지 않으면 메인스레드로만 작동이되서 화면이 멈춘다. let image_data : Data = try! Data.init(contentsOf: image_url) let image : UIImage = UIImage(data : image_data)! self.image_view.image = image */ // 백그라운드 스레드에서 Data 함수 사용하기. OperationQueue().addOperation { let image_data : Data = try! Data.init(contentsOf: image_url) let image : UIImage = UIImage(data : image_data)! // Data 함수는 백그라운드 스레드에서 사용되지만 // image같은 ui의 변화를 나타내게하는 코드는 main Thread에서 작업되어져야한다. 그래서 OperationQueue 에 main.addOpertion메서드를 사용해서 self.image_view.image = image 코드를 적용시킨다. OperationQueue.main.addOperation { self.image_view.image = image } } } }
728x90반응형'Programing Language > iOS(Swift)' 카테고리의 다른 글
(iOS) 스토리 보드 없이 ImageView,TextView 구성하기(기초) (0) 2019.10.29 (iOS) 스크롤 뷰란? (0) 2019.10.28 (iOS) TableView에서 사진 삭제하기 후 정렬하기 (0) 2019.10.28 (iOS) Xcode유용한 단축키 모음 (0) 2019.10.25 [iOS] 커스텀 알림창 만들기 (0) 2019.10.25