Swift รู้จักกับ strong, weak, unowned Part 1/4 (ARC)

Ton Attapong
Seekster Development
2 min readMar 10, 2019

ใน Part นี้ก่อนที่เราจะรู้จักกับ strong, weak, unowned เรามาทำความรู้จักกับ ARC กันก่อนดีกว่าครับ!!

ARC คืออะไร

ARC (Automatic Reference Counting) คือ ระบบจัดการหน่วยความจำที่ Apple นำมาใช้นั่นเอง แล้วเจ้า ARC นี่มันทำงานยังไง มาลองกันเลยครับ

เรามาจะลองคืนค่า Instance ในกรณีที่เราไม่ต้องการใช้งานแล้ว เพื่อให้เห็นภาพว่า แบบไหนที่ระบบ ARC จะคืนค่าและแบบไหนจะไม่คืนค่า โดยเราจะดูว่าเข้า deinit หรือเปล่า !!

ตัวอย่างที่ 1 แบบคืนค่า/ทำลาย Instance

จาก Code ด้านบนจะปริ้นคำว่า “deinit ก็มา” ซึ่ง case นี้สามารถคืนค่าได้นะครับ

เรามาดู Code กันบ้าง จะเห็นว่าหลังจากที่เราสร้าง Instance แล้วหากเราไม่ต้องการใช้แล้วและจะคืนค่าหรือทำลาย Instance ที่สร้างไว้ให้ระบบ โดยใช้คำสั่ง botA = nil โปรแกรมจะเข้า deinit ซึ่งนั่นหมายความว่าคืนค่าหรือทำลาย Instance สำเร็จนั่นเอง

ตัวอย่างที่ 2 แบบคืนค่า/ทำลาย Instance ไม่สำเร็จ

จาก Code โปรแกรมจะไม่เข้า deinit เลย เพราะอะไร?

เหตุที่ไม่เข้า deinit เพราะว่า Instance ของ Robot ยังไม่ถูกทำลายทั้งหมดนั่นเองเมื่อดูจาก Code ด้านบนจะเห็นว่าให้ botA = nil ตัวเดียว ในขณะที่ botB ยังคงเชื่อมอยู่กับ Instance ของ Robot

หากเราต้องการให้ระบบคืนค่า/ทำลาย Instance ของ Robot ก็จะเป็นแบบนี้ครับ

หากเราต้องการให้ระบบ ARC คืนค่า/ทำลาย Instance ที่เราไม่ได้ใช้แล้วนั่น เราจะต้องดูให้รอบคอบเลยนะครับ ^^

ก็ฝากไว้เท่านี้นะครับ หากมีข้อผิดพลาดประการใดต้องขออภัยด้วยนะครับ สำหรับ Part ต่อๆไปเราจะไปรู้จักกับ Strong Reference, Weak Reference, Unowned Reference กันนะครับ

--

--