EDIT : Aber solltest du im Destroy nicht einen TypeCast auf TMyOwnObject machen? FreeAndNil(TMyOwnObject(Objects[i]))
Das ist für den Aufruf des richtigen Destruktors nicht notwendig. Destroy ist schon in der Basisklasse TObject virtuell deklariert.
Jede Klasse muss Destroy, wenn erforderlich, in geeigneter Weise überschrieben, um die Instanz vollständig freizugeben.