[iOS Dev] Objective-C Category
ใครเขียน Ruby คงจะคุ้นชินกันอยู่แล้ว มันคือการทำ Monkey Patching
ถ้าให้อธิบายเป็นภาษาคนคงได้ว่า "การเพิ่มความสามารถให้ Class ที่เราเจาะจง" นั่นเอง
ตัวอย่างเช่น
อยากให้ NSString มีฟังก์ชั่นสำหรับการแปลงหมายเลขโทรศัพท์จากนำหน้าด้วย 0 เป็นนำหน้าด้วยรหัสประเทศ, อยากให้ NSArray มีฟังก์ชั่นในการ Shuffle Element ทั้งหมด เป็นต้น
ข้อดีบน Objective-C เทียบกับ Ruby คือ Category นั้นจะแยกไฟล์ไปเลย และ Import เข้ามาใช้ ดังนั้นเวลาทำงานร่วมกับผู้อื่น จะไม่มีปัญหาว่าใครเพิ่มอะไร ลงคลาสไหน เพราะทุกอย่างจะเห็นชัดเจนอยู่แล้ว
วิธีการขั้นแรกให้สร้าง Category File ขึ้นมาก่อนครับ โดยเลือกไปที่ New -> File -> Objective-C Category
เมื่อกด Next ก็จะเข้าสู่การตั้งชื่อของ Category ผมใช้ตัวอย่างที่กล่าวข้างต้น ตัวอย่างที่ 2 ดังนั้นผมจะตั้งชื่อว่า Shuffle นะ
เมื่อสร้างแล้ว เราจะไฟล์ 2 ไฟล์ (.h, .m) ที่จะมี Protocol ของชื่อคือ ClassName+CategoryName
เมื่อได้แล้วก็มาเริ่มเขียนกันเลย ทุกอย่างจะเหมือนกับการเขียน Helper Functon Class ธรรมดาๆ นี่แหละครับ แต่จะแทน Object ของ Class ที่เราทำ Category ขึ้นมาด้วย keyword 'self' ลองดูนะ
เวลาต้องการจะเรียกใช้ก็ให้ Import Category เข้าไปในไฟล์ แล้วเรียกใช้แบบการเรียกใช้ Function ปกติจาก Object ของ Class ที่เราทำ Category ไว้ ดังรูป
Reference: NSArray+Shuffle Code from https://github.com/bryanluby/NSArray-Shuffle
Comments
Post a Comment