Don't forget Weak in Delegation Pattern
ผมเห็นโค้ดหลายคน และโค้ดผมเอง เมื่อหลายเดือนก่อนที่เริ่มเอา Swift เข้ามาใช้อย่างจริงจังในออฟฟิศ พบว่า Memory Leak กระจายเลยครับ... ดีนะ ที่รู้ตัวทันก่อนจะส่งมอบโค้ดชุดนั้นให้ลูกค้าไป Delegation Pattern เป็นสิ่งที่เราใช้กันหลายจุด ใน iOS Development ในสมัยของการเขียน Objective-C ตามหลักการของ ARC นั้น เราควรประกาศตัวแปร delegate ใน class ที่ต้องการรับความช่วยเหลือเมื่อถึงเวลาใดๆ เป็น weak เนื่องจากปัญหา Retain Cycle ส่วนเกิดได้อย่างไร นั้นลองไปศึกษาดูเองนะครับ และเมื่อเราถูกสอนมาแบบนั้น ทำให้เรามาเขียนแบบนี้กับ Swift แล้วพบว่าโดน compiler ด่าแบบนี้ หลายคนก็เลยเอาออก เพราะว่าเอาออกแล้วมันใช้ได้... และคิดว่า Swift น่าจะฉลาดพอที่จะใส่ให้เราเอง แบบ @IBOutlet ซึ่งผิดถนัดครับ ไม่มีการใช้ให้อัตโนมัติใดๆ เนื่องจาก Protocol บน Swift จะใช้ในแนวทางของการทำ Type Sementics มากกว่า โดยธรรมชาติของมันเอง เลยทำตัวต่างจากคำว่า class นิดหน่อย และการประกาศ weak identifier ซึ่งต้องประกาศกับ object ใดๆ ที่เป็น class เท่านั้นตามที่โดนตักเตือน ในการใช้งาน Delegation Pattern ในรูปแ...