मुझे आईफोन के लिए प्रोग्रामिंग के बारे में कुछ भी पता नहीं है, लेकिन मुझे लगता है कि यह उसी कारण से है कि विनाशकों को रिवर्स ऑर्डर में बुलाया जाना चाहिए। आप यह सुनिश्चित करना चाहते हैं कि आपके सुपरक्लास को कॉल करने से पहले आपके सभी 'कचरा' को साफ़ कर दिया जाए। यदि आप इसे करते हैं तो चीजों के आसपास दूसरी तरफ गन्दा हो सकता है। उदाहरण के लिए, अपने नाशक स्मृति का उपयोग करने की जरूरत है कि सुपर नाशक पहले से ही मुक्त कर दिया गया है:
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();
}
}
}
आप अपने कोड में इस समस्या का सामना कर सकते नहीं, क्योंकि "आप जानते हैं कि आप क्या कर रहे हैं", लेकिन यह ऐसी चीजों को न करने के लिए एक सुरक्षित और समग्र बेहतर अभ्यास है।
एआरसी के साथ, आपको '[सुपर डेलोक]' बिल्कुल कॉल करने की आवश्यकता नहीं है, जब आप ऐसा करते हैं तो यह एक कंपाइलर त्रुटि उत्पन्न करता है। – teradyl