[iOS Dev] Modern Objective-C

ถึงแม้จะผ่านมา 1 ปีแล้ว มาเปิดดู Blog ที่ดองไว้ = =' นานมาก
ณ ตอนนี้ผมยังเห็น Code เก่าๆ ที่ยังไม่ Migrate ไป Modern Objective-C ก็ยังถือว่าเขียนทันนะ


Modern Objective-C เป็น Session ใน WWDC'12 ที่น่าสนใจเลยทีเดียว
หลายๆ อย่างทำให้เรา Code ง่ายขึ้น คิด(มาก) น้อยลง ไม่ใช่แค่การเปลี่ยน syntax
มีอะไรเปลี่ยนแปลงบ้าง เมื่อ 1 ปีที่แล้ว ... คุณล่ะ 1 ปีแล้ว เปลี่ยนหรือยัง ?

Method Ordering



เมื่อก่อนจะไม่สามารถทำได้ เพราะ Compiler จะอ่านจากบนลงล่าง จึงทำให้ไม่เจอ methodB ที่ methodA เรียก แต่ตอนนี้จะมาเรียก method ที่ประกาศอยู่ด้านล่างได้แล้ว เพราะ Apple LLVM Compier จะอ่าน Method Header ทั้งหมดก่อน แล้วค่อยอ่านเนื้อหาของแต่ละ Method อีกครั้ง

Enum Improvement

แบบแรกจะเห็นว่า Completion ค่อนข้างดี
แต่เราไม่สามารถระบุ Type ได้ ซึ่งจะเกิด Conflict กัน เช่น int กับ long long


แบบที่สองจะเห็นว่า Completion ห่วยมาก = =' ถึงจะรู้ว่ามันเป็น NSUInteger
แต่ก็ไม่รู้ว่าไอนี่มาจาก Enum ตัวไหน ถ้ามีการประกาศ Enum หลายๆ ชุด


Apple เลยจับข้อดีของทั้ง 2 แบบมารวมกันซะเลย หลังจากประกาศแบบนี้
เราก็จะมาสามารถรู้ Type ของ Enum ได้จากการประกาศ และ Code Completion ที่ดีด้วย


Property and Instance Variable Synthesis

เมื่อก่อนเวลาประกาศ Property จะต้องทำการ @synthesize ที่ Implementation File เพื่อให้ Compiler ทำการสร้าง Getter/Setter ให้ และยังประกาศในรูปแบบ


ทำให้เราสามารถเข้าถึง Instance Variable ด้วย _propertyName ได้ทันทีอีกด้วย

Object Literals

ในหัวข้อนี้เราจะดำเนินเรื่องด้วยภาพเลยละกันนะ
จะไม่ลงรายละเอียดมากนัก แต่จะเห็นภาพว่า syntax เปลี่ยนไปอย่างไรบ้าง




Object Subscripting


แล้วจะทำอย่างไร กับ Code เก่าที่มีอยู่ เขียนใหม่หรอ ? ไม่ต้อง ... Apple ได้จัดเตรียมเครื่องมือสำหรับการ Migrate ให้เราบน Xcode แล้ว โดยไปตามนี้เลย ลอง Migrate แล้ว Build Project อีกรอบ


ในส่วนของ Object Literals, Index Subscripting บางทีผมก็มองว่ามันไม่ได้มีแต่ข้อดีเรื่องการเขียนง่ายนะ แต่ข้อเสียคือ Learning Curve สูงขึ้น เนื่องจากเวลาใช้งานต้องคอยระวัง เช่นเรื่องการประกาศ MutableArray และเบื้องหลังมันก็ไม่ได้เรียก -objectAtIndex, -objectForKey เหมือนเดิม (ถึงผลลัพธ์จะเหมือนกัน) ที่เห็นชัดคือ เสียความเป็น Descriptive ของ Objective-C ไป ไม่มากก็น้อย เพราะบางคนก็มองความ Descriptive เป็นข้อดี ... บางคนก็มองเป็นข้อเสีย (ยาว อ่านยาก)

Popular posts from this blog

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

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

5 TED Talk ที่จะช่วยให้คุณทำงานดีขึ้น