Cocoa Programming: Delegate

Delegate

คือ object ที่ทำหน้าที่เสมือนตัวแทนของ object อื่น เหมือนเวลาเราไปกินข้าวนอกบ้าน สมมติว่าเราอยากกินข้าวผัด เราก็อาจจะไปสั่งให้พ่อครัวทำให้เรา หรือเราก็สั่งข้าวผัดจากพนักงาน พนักงานก็จะไปบอกคนทำเก็บเงินว่าเราสั่งรายการอะไรไป และก็เดินไปบอกพ่อครัวอีกทีว่าให้ทำข้าวผัด สุดท้ายก็ได้ข้าวผัดมาเหมือนกัน อธิบายในแบบรูปภาพอาจจะมองได้เป็นแบบนี้

ลองดูตัวอย่าง Code ภาษา C/C++ ต่อไปนี้

Continue reading Cocoa Programming: Delegate

Cocoa Programming I

ในที่สุดก็ได้เขียน Tutorial เกี่ยวกับ Cocoa ซะที เอาละมาเริ่มเลยดีกว่า

สำหรับโปรแกรมแรกที่จะได้ลองเขียน ผมใช้ชื่อว่า WordCount เป็นโปรแกรมง่ายๆ เอาไว้นับตัวอักษรใน text field ( ถ้าเป็น windows จะเรียกว่า text box ) แล้วก็แสดงผลออกมา

New Project

ก่อนอื่นเลยเราก็เปิดโปรแกรม xcode ขึ้นมาครับ แล้วเราก็สร้าง project ด้วย Cocoa Application หน้าตาจะเป็นประมาณนี้

New Cocoa Application Project

เมื่อเราเลือกโปรเจคเรียบร้อย และทำการตั้งชื่อว่า WordCount แล้วเราก็จะเห็น หน้าต่างมีหน้าตาประมาณนี้

ก็เท่านี้ก็เป็นการได้สร้าง Cocoa Application Project เรียบร้อยแล้ว

โดยปกติแล้วเมื่อเราสร้าง Cocoa Application ขึ้นมาจะมี File ทั้งหมดประมาณ 5 File ด้วยกัน แต่จะมี File ที่สำคัญ อยู่ด้วยกัน 3 File นั่นก็คือ Continue reading Cocoa Programming I

Introduction to Cocoa

ห่างหายไปนานกว่า เพราว่าผมย้ายโฮสมาเป็นเช่าเองทำเอง และยิ่งช่วงนี้ผมไม่ค่อยว่างจะเขียน Blog สักเท่าไหร่ ผมกลัวว่า blog จะร้างซะก่อน รับปากหลายทีแล้วว่าจะเริ่มเข้าสู่ cocoa ให้ได้ และวันนี้จะขอเกริ่นในภาพรวมของ Cocoa กันก่อนว่ามันคืออะไรและเราจะได้ใช้อะไรบ้าง

What is Cocoa ?

การเขียนโปรแกรมบน Mac นั้นมี Framework เพื่อให้นักพัฒนาได้ใช้ใช้อยู่ด้วยกัน 2 Framework ใหญ่ๆคือ Carbon และ Cocoa เหตุผลที่ต้องมีถึง 2 Framework นั้นก็เพราะว่า

Carbon นั้นเป็น Framework สำหรับภาษา C/C++
Cocoa เป็น Framework สำหรับภาษา Objective-C

ถ้าหากจะมองเป็นลักษณะภาพโดยรวมว่า Cocoa อยู่ในส่วนไหนของการเขียนโปรแกรมแล้วก็จะได้แบบนี้

โดยปกติแล้วไม่ว่าจะเขียนด้วย cocoa หรือ carbon อย่างใดอย่างหนึ่งก็ตาม class ทั้งสอง Framework จะมีความคล้ายคลึงกันเป็นอย่างมาก อาทิเช่น NSView ( Cocoa ) ก็จะมี class ที่คล้ายๆกันคือ HIView ( Carbon )

แล้วอะไรทำงานเร็วกว่า ?

จากรูปข้างบน ไม่ว่าจะเป็น Carbon หรือ Cocoa เองต่างก็ทำงานในระดับเดียวกัน เพราะสุดท้ายแล้วหลังการ compile เราก็จะได้ Binary ออกมาคล้ายกัน ( แต่ผมคิดว่า ถ้ามองในแง่ของการเขียนโปรแกรมแล้ว ผมว่าเขียน cocoa จะง่ายกว่า carbon เยอะ )

Cocoa Framework

cocoa นั้นประกอบได้ด้วย Framework ย่อยลงไปอีกต่างๆมากมาย โดยแบ่งออกเป็น หลักๆ ได้ 3 ส่วนคือ

  1. Foundation Framework
  2. Application Framework
  3. Other Framework ( CoreData , Sync Services , etc )

ในส่วนของ Foundation Framework นั้นก็ได้แบ่งออกเป็น Class ต่างๆเยอะมากมาย และผมก็ได้ลองพาเขียน objective-c เกี่ยวกับ Foundation Framework มาบ้างแล้ว อาทิเช่น NSString , NSArray เป็นต้น. Class ที่เกี่ยวข้องกับ Foundation Framework นั้นส่วนมากจะเป็น class พิ้นฐาน ไม่ว่าจะเป็น class ที่เกี่ยวกับ string, number ,string , file เป็นต้น

และสำหรับ Appliction Framework เองก็ประกอบด้วย Class มากมายเหมือนกัน ได้แก่ Class ที่เกี่ยวข้องกับ interface ทั้งหลาย เช่นเป็นต้นว่า  NSView , NSMenu ,NSToolbar

แต่ไม่ว่าจะเป็น Class อะไรก็ตาม โดยส่วนมากแล้ว Class เหล่านี้จะมี root class เป็น NSObject

Tools

การเขียนโปรแกรมใน Mac นั้นจะมี tools แถมมาให้มากมาย สำหรับ tools ที่จำเป็นกับการเขียน cocoa มีอยู่ด้วยกัน 2 อย่างคือ Xcode กับ Interface Builder

  • XCode
    เป็น IDE ที่เอาไว้เขียนโปรแกรมบน Mac และฟรี โดยจะแถมมากับ Mac อยู่แล้วโดยปกติจะไม่ได้ลงมาให้ เราต้องลงเอง ซึ่งก็ลงได้จาก แผ่น DVD/CD ที่แถมมากับเครื่องนั่นเหละครับ หรือว่าจะไป Download เองที่เวปของ apple ก็ได้ สำหรับคนที่ยังใช้ xcode ไม่เป็น แนะนำให้ไป อ่าน XCode Tutorial หรือว่าจะดูในแบบ XCode Tutorial VDO ก็ได้
  • Interface Builder
    เป็น Tool สำหรับเอาไว้ออกแบบหน้าตาของโปรแกรมว่าจะให้มันมี หน้าตาเป็นแบบไหน และ interface builder นี่เองจะเป็นตัวช่วยให้เราเขียน cocoa ได้ง่ายขึ้นแบบสุดๆ

ไว้เดี๋ยวครั้งหน้าเดี๋ยวมี Cocoa Tutorial มาแน่นอน

Macfeteria Open Now !!

ผมก็ได้ทำการย้าย blog จาก http://maccafe.wordpress.com มายังที่ใหม่คือ http://www.macfeteria.com แล้วน่ะครับ มันเกิดขึ้นจากที่ว่า ตอนแรกกะเขียน blog มันส์ๆ เขียนเอาเล่นๆ แต่พบว่า มีหลายคนที่สนใจเข้ามาอ่าน (ผมคิดว่าส่วนมากคงจะอยากเขียนโปรแกรม บน iPhone เลย search มาเจอ blog ของผมเข้า ) แต่เนื่องจากพบว่า บางครั้งอยากจะโพสไฟล์ ต่างๆลงไปมันก็ำทำได้ไม่ถนัดนัก เช่นว่าจะเอา source files ต่างๆ เช่น zip file ลงไปยัง blog ทาง wordpress เค้าก็ไม่ยอมให้ทำ ผมเลยลักไก่ด้วยการ เอามันมารวมกับ jpeg แต่ก็นั่นเหละ มันไม่สะดวก และไม่อนุญาติให้เอา flash มาใช้ ( บางครั้งผมจะทำ vdo tutorial มันก็ต้องการใช้ Flash )

คิดไปคิดมาก็จด domain เช่่าโฮส เองเลยดีกว่า ตัดสินใจได้ก็เลยลงเอยยังชื่อ macfeteria นี่เหละครับ ชื่อนี้ได้มาจาก

Mac + Cafeteria บรรยากาศประมาณร้านกาแฟ นั่งอ่านชิวๆไปเรื่อย

ตอนแรกคิดว่าจะทำเป็น community แบบ blognone หรือ freemac หรือว่าเวปอื่นๆดีไหม คิดไปคิดมา จึงตัดสินใจว่า ไม่ทำดีกว่า เขียนเป็น blog ดีกว่า เพราะผมคิดว่าคงไม่มีเวลามาจัดการ community อะไรแบบนี้เท่าไหร่ ถ้าหากทำเป็น community ต้องรับผิดชอบดูแลมากๆ ผมก็คิดว่าคงจะดูแลไม่ไหว เลยนี่เหละทำ blog เหมือนเดิมน่าจะดีกว่า

หลังจากออกแบบ theme ใหม่ รวมถึงการย้ายข้อมูลจาก เวปเก่า ก็ใช้เวลาเกือบๆ อาทิตย์ และในตอนนี้เสร็จเรียบร้อยแล้ว

จะมีติดเรื่อง comment นิดหน่อยน่ะครับ ว่าต้อง login ก่อนถึงจะ comment ได้ ( เหมือนกับ wordpress นั่นเหละ ) สามารถใช้ OpenID ได้น่ะครับคือว่าไม่ต้องสมัคร user ที่เวปของผมก็ได้ มีหลายๆทางเลือกครับ

อยากให้มีอะไรเพิ่มหรือว่า อยากให้เปลี่ยนอะไรก็ติชมกันมาครับ