2010-07-23 13 views
8

मुझे काम पर एक आईफोन ऐप मिला है और मैं उद्देश्य-सी के लिए नया हूं इसलिए मेरे पास अभी तक मेरी बीयरिंग नहीं है। मुझे इस तरह के कोड का सामना करना पड़ा:रिलीज मेमोरी के अलावा अन्य कुछ भी करना चाहिए?

- (void) dealloc { 
    [[StaticObject sharedObject] showSomeDialog]; 

    [super dealloc]; 
} 

मुझे पता है कि यह अन्य भाषाओं में फंस गया है। मेरा मकड़ी भावना उस कोड को देखकर पागल हो रही है।

क्या यह एक आम उद्देश्य-सी मुहावरे है? या मेरे पास ठीक करने के लिए एक क्रैपी कोडबेस है?

उत्तर

7

आपको यूआई कोड को -dealloc में नहीं रखना चाहिए। अंगूठे का सामान्य नियम, केवल आपके द्वारा किए गए कार्यों को साफ़ करने के लिए उपयोग करें: ऑब्जेक्ट्स को छोड़ दें, पर्यवेक्षकों को हटाएं, आदि

विचार करें कि क्या होगा यदि यह वस्तु मुख्य धागे के अलावा किसी अन्य धागे पर रहती है ... अब आपके पास गैर-मुख्य थ्रेड पर चलने वाला यूआई कोड होगा, जो खराब चीज़ है।

+4

लघु संस्करण: "हां, आपके पास ठीक करने के लिए एक क्रैपी कोडबेस हो सकता है।" ;-) –

+1

मेरी अंतर्ज्ञान देखने के लिए अच्छा है पुष्टि की है। – ageektrapped

0

आप कुछ डिबगिंग कारणों के लिए ऐसी चीज कर सकते हैं। लेकिन मुझे नहीं लगता कि आपको ऐसा कुछ भी करना चाहिए! इसका मतलब है कि किसी ऑब्जेक्ट को हटाए जाने पर एक संवाद संकेत दिया जाता है। इसलिए यदि आपको किसी निश्चित समय पर एक संवाद दिखाने के लिए किसी भी तंत्र की आवश्यकता है, तो इसे किसी ऑब्जेक्ट को डिलीकेट किए जाने पर निर्भर न करें। डेलोक विधि में आपको वास्तव में हटाए गए ऑब्जेक्ट द्वारा बनाए गए सभी ऑब्जेक्ट्स को रिलीज़ करना चाहिए। और कुछ फैंसी एप्लिकेशन फीचर्स नहीं कर रहे हैं।

संबंधित मुद्दे