Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

posted 2014-12-15 20:43:45 +0100

MiB gravatar image

Metodu #new definuješ tak, že např. vyvolá výjimku:

new
    self error: 'Use #ic: to create new instances.'

A v metodě #ic: použiješ self basicNew initialize místo self new pro vytvoření nové instance:

ic: ic
    ^ self basicNew
        initialize;
        ic: ic

Nově vytvořené instanci je nutné zaslat #initialize, protože to právě standardně zajišťuje #new, které v tomto případě obcházíš.

Metodu #new definuješ tak, že např. vyvolá výjimku:

new
    self error: 'Use #ic: to create new instances.'

A v metodě #ic: použiješ self basicNew initialize místo self new pro vytvoření nové instance:

ic: ic
    ^ self basicNew
        initialize;
        ic: ic

#basicNew je primitivní metoda pro skutečné vytvoření nové instance. Nově vytvořené instanci je nutné zaslat #initialize, protože to právě standardně zajišťuje metoda #new, které (je definována jako ^ self basicNew initialize), kterou v tomto případě obcházíš.