[iOS Dev] Objective-C Category


วันนี้จะว่าเรื่อง 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

Popular posts from this blog

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

"อีสุกอีใส" ประสบการณ์เมื่อต้องมาเป็นตอนอายุ 22

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android