วันนี้นั่งรื้อฟื้นความจำ อธิบายให้ @pitiphong_p ฟังว่าทำไมเวลา addEventListener แล้วต้องใส่ argument ช่องสุดท้ายให้เป็น true ลองดูก่อนละกันว่าหน้าตามันเป็นยังไง public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void useWeakReference หมายความว่าเวลาที่ GC มาเก็บกวาดแล้วนับว่ามี reference ไปที่ object นี้เท่าไหร่บ้าง มันจะไม่นับ reference นี้คำถามคือ ทำไมต้องทำให้ reference ไปที่ listener function เป็น weak ก็ลองดูจาก diagram ด้านล่างดู ที่ Observer จะมี reference ไปหามันจาก 2 Object คือตัวที่เป็นคนเพิ่มมันไปให้ Observable กับตัว Observable [...]
Tag Archives | reference
Weak reference
จำได้ปีที่แล้วผมเคยต้องศึกษาเกี่ยวกับ reference แบบต่างๆของจาวาดู (ทำงานกับจาวา) มาปีนี้เจอคล้ายกัน แต่เป็นของ as3 แต่ตอนใช้กับจาวาไม่ค่อยเห็นความสำคัญเท่าไหร่ เพราะว่าไม่มีอะไรให้เห็นเหมือนอย่าง flash แต่ก็มีข้อแตกต่างอยู่บ้าง reference ใน flash จะไม่แบ่งละเอียดยิบย่อยเหมือนของ java ที่มีสี่แบบ(strong, soft, weak, phantom) แต่จะมีแค่สองคือ strong กับ weak ไปเลย และความหมายก็ชัดเจนมากคือ reference ที่ยอมให้ gc จัดการได้ หรือไม่ได้ ขณะอ้างอิงอยู่ ก็เลยรู้สึกว่ามันง่ายดีนะ แต่พอเอาไปใช้จริงๆ มันดันไม่ง่ายนี่สิ เพราะ weak reference ของ as3 ดันมีให้ใช้จริงๆ แค่สองจุดคือ ตอนเพิ่ม listener กับ Dictionary โดยปกติเวลาเพิ่ม listener ให้กับ object ใด as3 จะให้เป็น strong reference [...]