Objective-C Programming Chapter 12 Copying Object

Chapter 12

Copying Object

ในบทนี้เราจะว่าด้วยเรื่องของการ copy object หรือการคัดลอกข้อมูลระหว่างอ็อบเจ็ก และคอนเซ็ปของการ copy ต่างๆเช่น shallow copy และ deep copy และวิธีการก๊อบปี้อ็อบเจ็กของคลาสต่างๆใน Foundation Framework
โดยปกติเมื่อเราประกาศตัวแปรที่เป็น primitive type เช่น int , double การที่เราจะก๊อบปี้ข้อมูลทำได้ง่ายมากเพียงแค่ใช้เครื่องหมาย = ก็สามารถคัดลอกข้อมูลได้แล้ว ดังตัวอย่างโค้ดต่อไปนี้

กำหนดให้ตัวแปร x มีค่าเท่ากับ 10 หลังจากนั้น y ก็ก๊อบปี้ค่าตัวแปร x เพื่อให้ตัวแปรทั้งสองมีค่าเท่ากัน จากนั้นบวกค่าให้กับตัวแปร x ด้วย 20 ส่วนตัวแปร y บวกด้วย 30 เมื่อบวกด้วยคนละค่ากัน แน่นอนว่าตัวแปรทั้งสองย่อมมีค่าไม่เท่ากัน เห็นได้ชัดว่าตัวแปร x และ y นั้นไม่ได้มีผลกระทบอะไรต่อกัน การเปลี่ยนแปลงค่า x ไม่ได้เกี่ยวข้องกับค่า y และในทางกลับกันค่า y ก็ไม่ได้เกี่ยวข้องกับค่า x แต่ประการใด ลองพิจารณาโปรแกรมตัวอย่างต่อไปนี้

โค้ดของโปรแกรมได้ประกาศสองตัวคือตัวแปร hello และ temp ซึ่งได้กำหนดค่าเริ่มต้นให้เท่ากับ “Hello” จากนั้นเราได้ให้ค่า temp = hello ดังนั้นค่าตัวแปร temp ก็ควรจะมีเท่ากับ “Hello” และในบรรทัดต่อมาเราได้เปลี่ยนแปลงค่าของ temp ด้วยการนำสตริง “ World” มาต่อท้าย เมื่อเราแสดงค่าของตัวแปรด้วย NSLog ก็จะได้ผลลัพธ์ดังนี้

Continue reading Objective-C Programming Chapter 12 Copying Object

Objective-C Programming Chapter 6

Chapter 6

Function , Pointer

การเขียนโปรแกรมโดยปกติมักจะพูดถึงเรื่องฟังก์ชันก่อนการเขียนคลาสและเมธอด แต่เนื่องจากฟังก์ชันมีความคล้ายกันกับเมธอด และเป็นเนื้อหาเกี่ยวกับภาษา C มากกว่า หนังสือเล่มนี้จึงเริ่มด้วยการคลาสและเมธอดก่อนฟังก์ชัน หากผู้รู้เรื่องฟังก์ชันและพ้อยเตอร์มาแล้วก็ยังแนะนำให้อ่านทบทวน เพราะเราจะลงลึกในส่วนของทำงานของระบบคอมพิวเตอร์เพื่อทำความเข้าใจถึงที่มาที่ไปของฟังก์ชันและพ้อยเตอร์
ในบทก่อนๆเราได้พูดถึงคำว่า “ฟังก์ชัน” อยู่หลายครั้ง อีกทั้งได้เรียกใช้งานฟังก์ชันต่างๆ เป็นต้นว่า NSLog ไปบ้างแล้ว ส่วนบทนี้เราจะเรียนรู้เกี่ยวกับฟังก์ชันในภาษา C เพื่อที่จะนำไปต่อยอดกับความสามารถใหม่ของภาษา Objective-C เช่น Grand Central Dispatch และ Block นอกจากนี้เราจะได้ศึกษาการใช้งานบางส่วนของ C Standard Library ซึ่งเป็นฟังก์ชันพื้นฐานของภาษา C และ Objective-C
ฟังก์ชันมีความคล้ายคลึงกับเมธอดของอ็อบเจ็กนั่นคือเป็นกลุ่มของคำสั่งๆต่าง ที่ทำงานด้วยกันเพื่อจุดประสงค์บางอย่าง เป็นต้นว่า ถ้าหากต้องเปรียบเทียบค่ามากกว่าน้อยกว่าของนักเรียนทั้งชั้น สิ่งที่แตกต่างระหว่างฟังก์ชันกับเมธอดก็คือไม่ต้องประกาศ Class และ Instance เพื่อเรียกใช้งาน

Function Definition

การประกาศฟังก์ชันในภาษา C มีรูปแบบการประกาศดังนี้
function

จะเห็นว่าการประกาศฟังก์ชันมีความคล้ายกับการประกาศเมธอด เริ่มต้นด้วยการกำหนดว่า เมื่อเสร็จสิ้นการทำงานฟังก์ชันนี้จะส่งค่าอะไรกลับมา เช่น int , double ในกรณีที่ไม่ต้องการส่งค่าใดๆกลับให้กำหนดเป็น void จากนั้นก็เป็นชื่อของฟังก์ชันและตามด้วยพารามิเตอร์ที่ใช้ในฟังก์ชัน เราจะเขียนฟังก์ชันง่ายๆที่ใช้เปรียบเทียบจำนวน 2 ค่า เพื่อหาว่าค่าใดเป็นค่าที่มากกว่า โดยมีโค้ดดังต่อไปนี้

Continue reading Objective-C Programming Chapter 6