Misteri TObjectList


Kalau kebetulan menggunakan collection TObjectList, pastikan waktu create objectnya memperhatikan parameternya dengan baik. Kalau ingin memusnahkan masing-masing object di array sendiri, pastikan parameter Createnya diisi False. Jangan dibiarkan saja, karena defaultnya True. Kalau True maka asumsinya si TObjectList yang akan memusnahkan masing-masing objectnya. Sehingga kalau kita hanya panggil constructor Create tanpa parameter (which is dianggap kita tidak akan memusnahkan elemen di array secara manual) lalu kita panggil Free untuk TObjectListnya, dia akan upset. Sepertinya banyak programmer yang terjebak di sini. Mungkin desain TObjectList kurang benar. Seharusnya defaultnya bukan True, tetapi False.

Mau lihat contoh kodenya? Coba tengok di sini.

Untuk constructornya sendiri di Help bisa dilihat:

constructor Create(Collection; AOwnsObjects: Boolean = True);

 The AOwnsObjects parameter is a boolean that indicates whether object entries are owned by the list. If the object is owned, when the entry is removed from the list, the object is freed. The OwnsObjects property is set from the value of this parameter. The default is true.

Tulisan ini dibuat sebagai pengingat diri sendiri yang sudah 
dua kali terjatuh dalam jebakan yang sama, 
walau rentang waktunya memang sangat berjauhan. :D
Iklan

Posted on September 30, 2012, in Pemrograman, Tips and tagged , , . Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: