[Pharo-project] super initialize is not a good idea for Behaviors ; )
Hi folks. After a couple of hours of trying to find a problem, I finally come to the cause: using super initialize is not always good. When I implement #initialize, I ALWAYS do "super initialize" in the first line of such method. Today, I found a problem while doing this in class side #initialize. I have a particular class and I did: MyClass class >> initialize super initialize. "My own specific code to run" But when sending MyClass initialize, I discovered that the "super initialize" did something I wasnt aware: Behavior >> initialize "moved here from the class side's #new" super initialize. superclass := Object. "no longer sending any messages, some of them crash the VM" methodDict := self emptyMethodDictionary. format := Object format in my case MyClass has subclass from ProtoObject, not Object. And of course, I got an empy method dictionary...etc. So...I just wanted to share my problem to avoid other's one. Cheers Mariano
On 12/13/2010 03:28 PM, Mariano Martinez Peck wrote:
Hi folks. After a couple of hours of trying to find a problem, I finally come to the cause: using super initialize is not always good. When I implement #initialize, I ALWAYS do "super initialize" in the first line of such method. Today, I found a problem while doing this in class side #initialize.
You should only super init on the instance side, not the class side; pretty sure this is a well known issue. -- Ramon Leon http://onsmalltalk.com
On Mon, Dec 13, 2010 at 11:33 PM, Ramon Leon <ramon.leon@allresnet.com>wrote:
On 12/13/2010 03:28 PM, Mariano Martinez Peck wrote:
Hi folks. After a couple of hours of trying to find a problem, I finally come to the cause: using super initialize is not always good. When I implement #initialize, I ALWAYS do "super initialize" in the first line of such method. Today, I found a problem while doing this in class side #initialize.
You should only super init on the instance side, not the class side; pretty sure this is a well known issue.
heheheh I leart it today, in the "hard way" ;) thanks ramon
-- Ramon Leon http://onsmalltalk.com
It has certainly been well-known to be potentially disastrous in Dolphin. ________________________________________ From: pharo-project-bounces@lists.gforge.inria.fr [pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Mariano Martinez Peck [marianopeck@gmail.com] Sent: Monday, December 13, 2010 5:35 PM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] super initialize is not a good idea for Behaviors ; ) On Mon, Dec 13, 2010 at 11:33 PM, Ramon Leon <ramon.leon@allresnet.com<mailto:ramon.leon@allresnet.com>> wrote: On 12/13/2010 03:28 PM, Mariano Martinez Peck wrote: Hi folks. After a couple of hours of trying to find a problem, I finally come to the cause: using super initialize is not always good. When I implement #initialize, I ALWAYS do "super initialize" in the first line of such method. Today, I found a problem while doing this in class side #initialize. You should only super init on the instance side, not the class side; pretty sure this is a well known issue. heheheh I leart it today, in the "hard way" ;) thanks ramon -- Ramon Leon http://onsmalltalk.com
participants (3)
-
Mariano Martinez Peck -
Ramon Leon -
Schwab,Wilhelm K