Tag Archives: NSBlockOperation

Objective-C Programming Chapter 19 (Part2)

NSOperation

NSOperation นี้เปรียบเสมือนหนึ่งหน่วยของการทำงาน แต่เนื่องจากคลาส NSOperation เป็น abstract class ดังนั้นจึงไม่สามารถใช้คลาสนี้ได้โดยตรง ต้องประกาศซับคลาสขึ้นมาใช้งาน หรืออาจจะใช้ซับคลาสของระบบ เช่น NSBlockOperation หรือ NSInvocationOperation ได้เช่นเดียวกัน จุดประสงค์หลักของคลาสนี้คือเตรียมฟังชั่นการทำงานบางอย่างที่จำเป็นของ task ไว้ให้ เช่น กำหนดลำดับความสำคัญ และบอกสถานะการทำงาน ซึ่งมีด้วยกันทั้งหมด 4 สถานะคือ ready, executing, finish และ cancel  อ็อบเจ็กของคลาสนี้มีลักษณะเป็นแบบ single-shot นั่นคือ ทำงานได้ครั้งเดียว เมื่อให้ทำงานไปแล้วโอเปอร์เรชันจะไม่สามารถนำกลับมาใช้ได้อีก

NSInvocationOperation

NSInvocationOperation เป็นซับคลาสของ NSOperation มีจุดประสงค์เพื่อใช้กับเมธอดของอ็อบเจ็ก ดังนั้นการประกาศอ็อบเจ็กของคลาสนี้ต้องกำหนด selector พร้อมกับอ็อบเจ็กที่ต้องการให้ทำงาน เช่นตัวอย่าง โปรแกรมต่อไปนี้

Program 19.5

NetworkController.h

NetworkController.m

จากโค้ดตัวอย่าง เมธอด downloadWithURL: นั้นทำหน้าที่เพียงแค่สร้าง operation object และได้กำหนด selector เป็น performDownload: ซึ่งเป็นเมธอดที่ใช้สำหรับดาวน์โหลดข้อมูล เมื่อโอเปอร์เรชันทำงานก็จะเรียกใช้เมธอดนี้นั่นเอง Continue reading Objective-C Programming Chapter 19 (Part2)