Xcode ในตอน ARC คืออะไร

xcode_arcสำหรับ ARC  นั้นย่อมาจากคำว่า Automatic Reference Counting เป็นระบบจัดการหน่วยความจำ (Memory) ซึ่งการจัดการหน่วยความจำหรับการพัฒนาซอฟแวร์ในปัจจุบัน เป็นสิ่งที่สำคัญมากเพราะจะเป็นจุดที่สำคัญที่ช่วยเพิ่มประสิทธิภาพและความเร็วในการใช้งานโปรแกรม  โดยเหล่านักพัฒนาซอฟแวร์ไม่ต้องกังวลว่าเมื่อไหรที่ควรจะทำลายตัวแปร (Variable) อีกต่อไป เพราะ ARC จะจัดการให้เองทั่งหมด

ตัวแปร (Variable) คืออะไรและทำไมต้องจัดการ

ในการเขียนโค้ดโปรแกรมไม่ว่าภาษาใด ๆ หน่วยเก็บข้อมูลพื้นฐานที่สุดก็คือตัวแปรซึ่งเป็นการจองพื้นที่ในหน่วยความจำ (RAM) เพื่อใช้ในการเก็บข้อมูลของโปรแกรมเช่น ชื่อผู้ใช้ รหัสผ่าน หรือแม้กระทั่งรูปภาพที่กำลังแสดงอยู่บนหน้าจอ ซึ่งตัวแปรทุก ๆ ตัวจะต้องประกอบไปด้วยการสร้าง (Create) เพื่อจองพื้นที่ในหน่วยความจำสำหรับเก็บข้อมูล และ ทำลาย (Destroy) เป็นการคืนพื้นที่หน่วยความจำให้ระบบเพื่อสามารถนำไปใช้ไหม่ได้

เมื่อไหรควรทำลาย (Destroy) ตัวแปร (Variable)

ซึ่งการสร้างและการทำลายนี้ต้องมีส่วนที่สัมพันธ์กัน ถ้าเราทำลายช้าเกินไปนั้นหมายถึงระบบต้องสูญเสียหน่วยความจำไปแบบไร้ประโยชน์และเป็นส่วนสำคัญที่ทำให้ระบบทำงานช้าลง เพราะถ้าหน่วยความจำเต็มต้องมีการพักข้อมูลลงฮาร์ดดิส (Memory Swap) ซึ่งจะทำงานช้ามาก ๆ

แต่ถ้าเราทำลายเร็วเกินไปนั้นหมายโปรแกรมจะทำงานล้มเหลว (crash) เพราะเมื่อจะทำการเก็บข้อมูลแล้วไม่มีที่ให้เก็บเป็นความผิดพลาดที่ทำให้ต้องออกจากโปรแกรมไปเลย ซึ่งเป็นเหตุผลที่ใครหลายคนที่เริ่มจะหัดเขียนโปรแกรมแบบนี้เลิกล้มความตั้งใจหรือไม่ก็ใช้เวลานานในการพัฒนาและเสียเวลาไปกับการแก้ไขจุดบกพร่อง (De-Bug) ไปนานมาก

ตัวแปรแบบ Weak คืออะไร

ในส่วนของตัวแปรแบบ pointer คือตัวแปรที่ไม่ได้มีข้อมูลอยู่จริง ๆ แต่จะเป็นการชี้ไปยังตำแหน่งของข้อมูล (Object Variable) จริง ๆ อีกที่หนึ่ง ซึ่งในส่วนของ Objective-C ที่ใช้ในการพัฒนาซอฟแวร์บน OS X และ iOS นั้นจะมีสองแบบคือ Weak pointer และ Strong Pointer ซึ่งจะชี้ไปยังข้อมูลจริง (Object Variable) ที่  ARC มีหน้าที่ึคอยจัดการในส่วนของการคืนพื้นที่ให้ระบบนั้นว่า ทุก ๆ ข้อมูลจริง (Object Variable) ที่มีตัวแปรแบบ Strong Pointer ชี้อยู่ห้าม ARC ทำลาย (Destroy) เป็นอันขาด แต่ถ้าข้อมูลจริง (Object Variable) ใดที่มีตัวแปรแบบ Weak pointer ชี้อยู่ ARC สามารถทำลายข้อมูลจริง (Object Variable) ได้ทุกเมื่อหรือเมื่อไม่มี Strong pointer ใดชี้อยู่เลย โดยไม่ต้องสนใจตัวแปร Weak pointer ที่ชี้อยู่

หากยังมีข้อสงสัยสามารถอ่านเพิ่มเติมได้ที่ Automatic Reference Counting ครับหรือจะสอบถามมาทางเวปได้เลยยินดีพูดคุยกันนะครับ

 

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading...

ใส่ความเห็น