ห่างหายจากการเขียน tutorial ไปนานพอสมควร เมื่อวันก่อนมีคนมาถามผมใน Forums ว่าสร้างและใช้ Lib อย่างไร วันนี้เลยเขียน Blog เลยดีกว่า สำหรับใครที่ยังไม่รู้ว่า Static Lib คืออะไร ผมอธิบายง่ายๆว่ามันคือ การรวมชุดคำสั่ง เข้าไว้ด้วยกัน อาทิเช่น เราเขียนโปรแกรมคำนวน ด้วยสูตร ต่างๆที่ซับซ้อน และเราก็ต้องการใช้สูตรเหล่านี้ กับโปรแกรมอื่นๆ วิธีการก็คือ copy code มาแล้วก็ paste ลงไป ซึ่งมันก็ไม่สะดวก เพราะบางที code มันมีหลายพัน บรรทัด เราจึงเขียนมันออกมา เป็น Library และข้อดีของ Library คือหลังจากการ Compile ไปแล้ว เราสามารถให้คนอื่นเอาไปใช้ต่อ โดยที่ใช้แค่ .h และ lib เท่านั้น ตัว Source ไม่ต้องเอาไป
วันนี้สิ่งที่จะเขียนกันก็คือ Library ง่าย เอาละครับ ลงมือกันเลยดีกว่าเพื่อเป็นการไม่เสียเวลา
Static Lib Project
ก่อนอื่นเลยเราสร้าง Project ใหม่ขึ้นมาให้ชื่อว่า MyLib โดยเราเลือก Project Template ให้เป็น แบบ Static Library ดังรูป
หลังจากนั้นก็จะเห็น Project ประมาณดังรูป
จะเห็นว่า Project นั้นไม่ได้ให้ File อะไรมามากมาย เท่าการสร้างโปรเจคแบบอื่นๆเลย เอาละ ! ลำดับต่อไปคือ เพิ่ม Class เข้าไปยัง Project ของเรา โดยผมให้ชื่อว่า MyClass หลังจากเพ่ิม Class เข้าไปแล้วก็จะเห็น File เข้ามาดังรูป
ต่อไปเราก็จะเขียน Code กัน
// MyClass.h // Header File //---------------------- @interface MyClass : NSObject { } +(NSString*) sayHello; @end
ในส่วนของ implement ก็มี code ง่ายๆดังนี้
@implementation MyClass +(NSString*) sayHello { return @"Hello World"; } @end
จาก code ข้างบน คือ ผมมี Class ที่ชื่อว่า MyClass โดยมีฟังก์ชั่น ที่ชื่อ sayHello แค่ฟังก์ชั่นเดียว โดยในฟังก์ชั่นนี้ก็คือ ส่งคำว่า Hello World กลับมานั่นเอง
หลังจากนั้นก็ Compile ครับ เมื่อ Compile แล้วจะเห็น LibMyLib.a ดังรูป
ลำดับต่อไปคือ เอามาใช้ การที่เราจะเอา Lib มาใช้นั้นสิ่งที่ต้องการมีอยู่สองอย่างครับคือ
- Compile Lib ( File นามสกุล .a )
- Header ( File นามสกุล .h )
จากรูปข้างบน จะเห็น path ของ lib ที่เราสร้างขึ้นมาครับ เราก็ไป copy เอามาไว้ยัง Folder ใหม่ พร้อมกับ File .h
ส่วนไฟล์อื่นๆ หลังจากการ Compile แล้วก็ไม่จำเป็นครับ
ต่อไปคือสร้าง โปรเจคที่ใช้งาน Lib ของเรา
Say Hello Project
เราก็สร้างโปรเจค ขึ้นมาใหม่ ผมตั้งชื่อว่า DemoLib เป็นแบบ View Base ดังรูป
เมื่อเราสร้างเรียบร้อยแล้ว ต่อไปคือ เอามาใช้ .. สิ่งที่ต้องทำต่อไปคือเอา 2 Files ที่ได้จากโปรเจค แรก เข้ามายัง โปรเจคใหม่ โดยกด Click ขวาที่โปรเจค แล้วก็เลือก Add ครับดังรูปครับ
เมื่อกด Add >> Existing Files … แล้วจะเห็น หน้าต่างดังรูป ที่ผม ได้ขีดเส้นไว้คือ ถ้าหากเราเลือก option นี้มันจะ copy file มายังโปรเจคของเราเลย อันนี้ก็แล้วแต่สะดวกนะครับ ว่าจะให้มัน copy file มาหรือไม่ต้อง
เมื่อเสร็จเรียบร้อยแล้ว ก็จะเห็นว่ามี File เข้ามายังโปรเจคของเราแล้ว ดังรูป
ต่อไปครับ ลงมือเขียน code กัน
โดยที่โปรแกรมที่เราจะเขียน ก็ง่ายๆครับ คือกด ปุ่ม แล้วให้ Lable มันเปลี่ยนเป็นคำว่า Hello World เท่านั้นเอง
// Demo View Controller Header @interface DemoLibViewController : UIViewController { IBOutlet UILabel* text; } -(IBAction) clickSayHello; @end
จาก ข้างบนเราประกาศ Outlet แค่ UILabel กับ Action ที่ชื่อ clickSayHello
#import "MyClass.h" @implementation DemoLibViewController -(IBAction) clickSayHello { text.text = [MyClass sayHello]; } @end
ส่วน implement นั้น จะสังเกต เห็นว่าเรา ได้เรียนใช้ [MyClass sayHello]; ซึ่งเป็น Library ที่เราได้สร้างมานั่นเอง โดยที่ฟังก์ชั่นนี้ก็คือ ส่ง String กลับมาเป็นคำว่า Hello World นั่นเอง
และสุดท้าย ก็ออกแบบหน้าตาของโปรแกรมด้วย interface builder ครับ แล้วเราก็เชื่อม Action/ Outlet ให้เรียบร้อยดังรูป
เท่านี้ก็เป็นอันเสร็จแล้ว เมื่อเรา compile / run ก็จะเห็นหน้าตาโปรแกรมดังรูป เมื่อกด Say Hello คำว่า Label ก็จะเปลี่ยนเป็นคำว่า Hello World ครับ
สำหรับวันนี้ ก็เป็น tutorial ง่ายๆ แต่รับรองว่า มีประโยชน์ แน่ๆครับ ติชม ยังไง ก็ เม้นกันมาได้ครับ














Plzzy says:
มารับรู้ตามที่แนะนำครับ ขอขอบพระคุณมากๆอีกทีนะครับ
October 2, 2009, 2:40 pmFolkTrance says:
ว้าวเจ๋งสุดยอดไปเลยครับ
October 2, 2009, 4:21 pm