Foundation Framework I – Number

หลังจากเขียน basic – objective-c ได้สักพัก คิดว่าอาจจะไม่มันส์เท่าไหร่ วันนี้ลองมาเขียนเกี่ยวกับ Foundation Framework มั่งจะดีกว่า เพราะยังไงก็ต้องได้ใช้ class เหล่านี้ในการ พัฒนาโปรแกรม สำหรับ mac และแน่นอนว่า สำหรับ iPhone ด้วย

สำหรับ อย่างแรกที่จะพาลองเขียนกัน ก็คือการใช้งาน class ที่ชื่อว่า NSNumber สำหรับ class นี้จะเกี่ยวข้องกับเลขทั้งหมด เพราะว่า int ,float , longs พวกนี้เป็น basic data type มันไม่ใช่ Object และในเมื่อมันไม่ใช่ Object ก็แน่นอนว่า เราไม่สามารถส่ง message (เรียก function) ไปหามันได้ และอีกอย่างก็คือว่าจะมี class บางจำพวกที่ต้องการเก็บ เป็น Object ไม่ใช่ basic data type อย่างเช่นว่า NSArray เป็นต้นโอเคงั้นก็ดู code ตัวอย่างก่อนเลยแล้วกันว่ามันทำอะไรได้บ้าง

ก็มาเริ่มที่ header กันก่อนเลย เราทำการ import ในส่วนของ Foundation Framework เข้ามาหลายตัว ส่วนที่สำคัญในตัวอย่างข้างบนก็คือ

ตรงส่วนนี้เป็นการจองหน่อยความจำให้กับ autoreleasepool เหตุผลก็เพราะว่าในถ้าโปรแกรมเราเรียกใช้ foundation class ทั้งหลายเราจำเป็นต้องมี autoreleaspool เนื่องจากว่ามันช่วยอำนวยความสะดวกในการจัดการ memory ของระบบ คือหลังจากที่เรามี autoreleasepool แล้วทุก object จะถูกส่งเข้ามายัง pool ที่เราสร้างขึ้นเพื่อที่ว่าตอนปิดโปรแกรม มันจะได้มาดูว่าใน pool มีอะไรอยู่และจะทำการ release object ใน pool เพื่อคืนหน่วยความจำ และตอนก่อนปิดโปรแกรมก็อย่าลืมเรียก release

เอาละ  เราได้ประกาศตัวแปร มาหลายตัวเป็นต้นว่า doubleNumber แล้วก็ทำการใส่ค่าให้มันโดยการเรียก numberWithDouble แล้วก็ลองแสดงค่าผลลัพธ์ของแต่ละตัวแปรออกมา ก็เป็นอันจบ จะมีที่แปลกๆหน่อยก็คงจะเป็น isEqualToNumber สำหรับ method นี้ก็เป็นการเปรียบเทียบว่าเลขสองตัวนี้มันเท่ากันหรือไม่

คิดว่า code ไม่น่ายากน่ะ ถ้าเอาไป compile  แล้ว run ดูก็จะได้ผลลัพธ์ แบบนี้

200
500.250000
12345000000000000000.000000
Numbers are not Equal

หลายคนอาจจะบอกว่าทำไมไม่ประกาศเป็น int , float ซะก็น่าจะใช้ได้เหมือนกัน จริงๆก็ใช้ได้ครับ แต่ว่าขอเน้นย้ำว่า NSNumber มันเป็น class น่ะ ไม่ใช่ basic data type จุดประสงค์ของผมก็คือ ต้องการประกาศ object แล้วเดี๋ยวเราจะได้ใช้ประโยชน์ร่วมกับ Foundation class  ตัวอื่นๆอีก

สำหรับตัวอย่าง Source Code ก็โหลดได้ที่นี่ครับ
Download Foundation Framework I (NSNumber) Source Files

Leave a Reply