Cocoa & iPhone Development : Objective – C

กุมภาพันธ์ 27, 2009 at 7:52 pm 9 ของความคิดเห็น

ขออภัยที่หายไปนาน เนื่องจากเดือนนี้ ง่วงอยู่กับการอ่านหนังสือ iPhone อยู่ (แถมได้ E-book มาอีกเล่ม) เร็วๆนี้คงได้มา Review กันหลายเรื่องแน่นอน (ขอบอกไว้ก่อนว่า เล่มที่อ่านอยู่เจ๋งเอาเรื่องเลยทีเดียว)

เนื่องจากกลัวว่าจะลืมกัน บวกกับกลับมาลับ Basic กันนิดหน่อย เลยเบรคเรื่องอ่านหนังสือมาเขียนบลอกนิดนึง เริ่มเลยละกัน

…อย่างที่สามในการพัฒนา iPhone Application คือ “ภาษา” นั่นเอง ปัจจุบันแม้ว่าจะใช้ภาษา Native อื่นๆในการพัฒนา App บน Mac ได้มากมาย ไม่ว่าจะเป็น Java (ได้นานแล้ว), Python, Ruby ฯลฯ แต่โดยหลักแล้ว ภาษาหลักที่ใช้ในการพัฒนา App บนแมค และโดยเฉพาะ iPhone มีแค่ภาษา Objective-C เท่านั้น

Objective-C เป็นภาษา C ที่ถูกเอามาพัฒนาให้รองรับแนวคิดแบบ Object-Oriented แท้ๆ ย้ำว่าแท้ เพราะไม่เหมือนภาษา C++ ที่เป็น Object-Oriented ไม่แท้ (C++ มีคุณสมบัติของ OOP ไม่ครบถ้วน อาจค้านความคิดของหลายๆคนนะครับ ว่ามันไม่แท้ได้ไง ถ้าให้แจงกันใน Entry นี้คงหลุดประเด็นเกินไป ดังนั้นจะไม่พูดถึงนะครับ) เพราะฉะนั้น ลักษณะโครงสร้างและ Syntax ของ Objective-C จึงเหมือนกับภาษา C ซะเป็นส่วนมาก สไตล์การเขียนจึงเป็นแบบ Sequence Programming รวมถึง Library ของภาษา C ก็นำมาใช้ได้เลย แบบไม่ต้องเปลี่ยนแปลงอะไร (ถ้าเป็น Standard Library) 

แต่สิ่งที่เพิ่มเข้ามา คือลักษณะ Syntax ที่แตกต่างในบางเรื่อง ที่เห็นหลักๆก็ส่วนเกี่ยวกับ Object และ Class การประกาศและการใช้งานคลาส ที่ไม่เหมือนกับของภาษา OOP แบบอื่นๆ ที่มีการใช้ “.” ในการแทน Method ที่เรียกใช้ แต่ Syntax ของ Obj-C จะใช้ “ปีกกา ( [] )” แทนการเรียกใช้ Method ของ Object ตัวอย่างเช่น

id testString = [NSString stringWithString:@”Test String”];

จากตัวอย่าง จะเห็นว่า NSString เรียกใช้ method “stringWithString” โดยมีค่่า Parameter เป็นข้อความว่า Test String แบบนี้เป็นต้น

จะเห็นว่า Syntax แบบนี้ค่อนข้างจะเรียบร้อยและอ่านเข้าใจง่ายกว่า Syntax แบบจุด มากกว่าเยอะ 

เรื่องของชนิดข้อมูล (Datatype) ก็เช่นกัน Obj-C มีชนิดข้อมูลทั้ง Static และ Dynamic ที่สำคัญคือ Datatype แบบ Dynamic เพราะเป็นองค์ประกอบสำคัญของหนึ่งในคุณสมบัติของ OOP ข้อที่ชื่อว่า “Polymorphism” (ซึ่ง C++ ไม่มี) ซึ่งตัวแปรแบบ Dynamic Datatype ของ Obj-C คือ Datatype ชนิดที่ชื่อว่า “id” ดังตัวอย่างข้างต้น จากตัวอย่างหมายความว่า “ถ้า Value ด้านหลัง เปลี่ยน Class เป็นชนิดอื่นที่ไม่ใช่ NSString ตัวแปร testString ก็เป็น Object ของ class นั้นได้โดยไม่ต้องเปลี่ยนชนิดข้อมูล” DataType ชนิดนี้ ต่อไปเราจะได้เห็นกันบ่อยๆครับ

การจัดการ Memory ใน Obj-C ก็เป็นเรื่องสำคัญ ลักษณะของการจัดการ Memory ของ Obj-C คือการ Retain Count ขอยกตัวอย่างจากในหนังสือของ Aaron ละกันนะครับ ว่ามันเหมือนกับเราจูงหมาน่ะครับ ถ้าหมาของเรามีเชือกจูงอยู่ 2 เส้น ก็เหมือนกับตัวแปรตัวนั้นถูกเชื่อมการทำงานอยู่กับ 2 component  ตัวแปรนั้นก็จะยังไม่ถูกคืนความจำ และเมื่อใดที่คนจูงทั้งสองคนปล่อยเชือกจูง หมาก็มีอิสระ ก็เหมือนกับ Component ไม่มีการใช้งานตัวแปรนั้นแล้ว ก็จะทำการคืนหน่วยความจำให้เครื่องนั่นเอง

ข้างต้นเป็นสิ่งที่อยู่ใน Objective-C 1.0 นะครับ แต่หลังจาก Mac OSX Leopard ถูกปล่อยออกมา Objective-C ก็เพิ่ม Version ขึ้นมาด้วย เป็น 2.0 สิ่งที่เพิ่มขึ้นมาก็มีอยู่ 3 อย่างใหญ่ๆ (ที่จริงเคยเขียนไว้ในนี้แล้ว) 

1. Fast Enumerate เป็นการวนลูปใน Array แบบใหม่ ที่สั้นลง เร็วขึ้นง่ายขึ้น ลักษณะคล้ายๆกับการวนลูปในภาษา Ruby เจ๋งมากครับอันนี้
2. Garbage Collector เป็นระบบจัดการ Memory แบบใน Java ชาว Cocoa ก็ได้เฮ แต่ Cocoa Touch คงต้องจ๋อยกันไป เพราะ iPhone ไม่ Support Garbage Collector ครับ
3. Property List ลักษณะของการกำหนดคุณลักษณะของ Attribute ของ Object แบบใหม่ ที่ช่วยให้เรากำหนดคุณลักษณะและค่าของตัวแปร  ได้ง่ายขึ้นด้วยโค้ดที่สั้นลง แต่อันนี้ดีอย่างเสียอย่างครับ ข้อดีคือโค้ดสั้นลงเยอะเหมือนกัน แต่ข้อเสียคือ เราต้องกลับไปใช้ Syntax แบบจุดกัน อันไหนใช้จุดอันไหนใช้ปีกกา มือใหม่ได้งงกันน่าดูหล่ะครับ ซึ่งข้อนี้ ต่อไปจะได้เจอกันเยอะเลย ส่วนเรื่องของ Property List ถ้าอยากรู้ตอนนี้เลยก็ลองเข้าไปอ่านของเวบ mac’feteria เอาก่อนได้เลย พี่เขาเขียนไว้ดีมากครับ

สิ่งที่แตกต่างระหว่าง C และ Obj-C ที่จะพูดถึงใน Entry นี้ ก็จะขอเขียนไว้เท่านี้ก่อน(เพราะยังนึกไม่ออก แหะๆ) รายละเอียดลึกๆอื่นๆคงได้เขียนเพิ่มตอนหลัง หรืออธิบายในบทถัดๆไป ในบทนี้ไว้เท่านี้ก่อนนะครับ ;)

Entry filed under: Cocoa Programming, Computer, iPhone Programming, News & Article. Tags: , , , , , .

iPhone Web Application Development Link Update

9 ความเห็น Add your own

  • 1. รับแปลงานจ้า  |  มีนาคม 3, 2009 ที่ 8:40 am

    ขอบคุณสำหรับความรู้ครับ

    ตอบกลับ
  • 2. worrawat  |  มิถุนายน 18, 2009 ที่ 10:54 am

    กำลังเริ่มศึกษาเกี่ยวกับการเขียนโปรแกรมบน iphone อยุ่พอดี

    ยังไงก็ช่วยแนะนำด้วยนะครับ

    ตอบกลับ
    • 3. Jerapong Nampetch  |  มิถุนายน 20, 2009 ที่ 1:51 am

      ฮ่าๆ มีคนอยากเป็น iPhone Programmer เพิ่มอีกคนแล้ว ดีครับมาร่วมแชร์กัน

      เรื่องของ iPhone ก็อยากจะเขียนแนะนำให้นะครับ แต่ตอนนี้เป็นช่วงงานยุ่งแล้วก็เป็นช่วงหัวเลี้ยวหัวต่อของ iPhone Programming ด้วย ก็คือเรื่องของ Firmware 3.0 ที่ต่อไปต้องเขียน iPhone’s App ให้รองรับ Firmware 3.0 เป็นหลัก ซึ่งมีความเปลี่ยนแปลงมากมายซะจริงๆ (Deprecate ไปตรึมเลย) ถ้าอยากศึกษาก็ลองดูในหนังสือและเวบที่แนะนำไปนะครับ

      อ่อ ฝากด้วยครับ ตอนนี้เกี่ยวกับ iPhone ไปเขียนใน http://www.i-gee.co.cc แล้วครับ

      ตอบกลับ
      • 4. iBoat  |  มิถุนายน 23, 2009 ที่ 9:54 am

        รับสอนเขียน App iPhone มั้ยครับ ต้องการด่วน กรุณาติดต่อกลับดวยครับ jpopbest@gmail.com 081-5671717 โบ๊ท

      • 5. Jerapong Nampetch  |  มิถุนายน 23, 2009 ที่ 3:55 pm

        ต้องขอโทษด้วยนะครับ ตอนนี้ตัวผมเองคงไม่สะดวกเท่าไหร่เนื่องจากงานประจำกับวรยุทธ์ยังไม่กล้าแข็งนัก(ว่าไปนั่น)

        ถ้าอยากศึกษาผมก็แนะนำให้ลองเขียนจากหนังสือนะครับ แล้วสงสัยอะไรตรงไหนก็เมล์มาถามกันได้ ยินดีตอบให้ครับ(ถ้าไม่เกินความสามารถ) และผมจะได้เอาไว้เขียนเป็น Entry ใน Blog ด้วย

        สำหรับหนังสือ แนะนำไปแล้วนะครับ ว่าเล่มไหนน่าอ่านบ้าง ถ้าไม่มีหรืออยากได้เล่มไหนก็เมล์มาขอได้ที่ onoaonoa@gmail.com ถ้ามีจะส่งไปให้นะครับ

  • 6. ผู้ติดตามผล  |  กรกฎาคม 24, 2009 ที่ 3:58 pm

    คอยติดตามผลงานครับเรื่อย ๆ ครับ
    ขอบคุณนะครับ
    กำลังศึกษาวิธีเขียนโปรแกรม บน iPhone อยู่เหมือนกันครับ

    ตอบกลับ
  • 7. Chiwa  |  สิงหาคม 11, 2009 ที่ 3:04 am

    สุดยอด

    ตอบกลับ
  • 8. lanansoft  |  มีนาคม 23, 2010 ที่ 6:29 am

    iPhone/Mac Application Developer

    Bachelor’s Degree or higher in Computer Science, Computer Engineering, Information Technology
    Experiences in Software Development and Design
    Strong Cocoa/Objective-C experience
    Expertise in creating well-defined iPhone/Mac User Interfaces
    Knowledge of iPhone SDK/SQLite database
    Strong understanding of building iPhone applications that utilize web-services (http/xml)
    Good command of spoken and written English
    Highly motivated and must work well in a team environment
    Able to work at Chiang Mai

    ตอบกลับ
  • 9. Guwnteen  |  มกราคม 5, 2011 ที่ 12:01 pm

    ขอบคุณมากก้าบ อยากได้วิธีการสร้างเกมบน iphon จังก้าบ กำลังทำเอกเทศเรื่องนี้อะหาเอกสารประกอบยากมากกกกกก

    ตอบกลับ

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  เปลี่ยนแปลง )

Google photo

You are commenting using your Google account. Log Out /  เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out /  เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out /  เปลี่ยนแปลง )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


del.icio.us For iPhone dev

Post Calendar

กุมภาพันธ์ 2009
พฤ อา
« ม.ค.   มี.ค. »
 1
2345678
9101112131415
16171819202122
232425262728  

%d bloggers like this: