Je ne sais rien à propos de la programmation pour l'iPhone, mais je suppose que c'est pour la même raison que les destructeurs ont besoin d'être appelés dans l'ordre inverse. Vous voulez vous assurer que tous vos "déchets" est nettoyé avant d'appeler votre super-classe. Si vous le faites, l'autre façon de contourner les choses peuvent déraper. Par exemple, si votre destructeur besoins d'accéder à la mémoire que le super destructeur a déjà libéré:
class X {
private Map foo;
function __construct() {
foo = new Map();
}
function __destruct() {
foo.free;
}
}
class Y extends X {
function __construct() {
super.__construct();
map.put("foo", 42);
}
function __destruct() {
super.__destruct();
if (map.containsKey("foo")) { // boooooooooom!
doSomething();
}
}
}
Vous ne pouvez pas rencontrer ce problème dans votre code, parce que "vous savez ce que vous faites", mais il est plus sûr et de meilleure pratique de ne pas faire de telles choses.