2010-01-21 8 views
15

मैं जब एक वस्तु है कि कुछ performSelector:withObject:afterDelay जहां चयनकर्ता तरीकों किसी अन्य वस्तु बुला रहा है और मैं वस्तु को रिहा कर रहा हूँ ...मैं सभी प्रदर्शन चयनकर्ता को कैसे हटा सकता हूं: ऑब्जेक्ट के बाद: डेले :?

// मेरी कक्षा में कुछ मैं कहाँ

बोल रहा हूँ deallocating एक EXC_BAD_ACCESS करने के लिए भाग गया
[self performSelector:@selector(callObject1Function) withObject:nil afterDelay:2.0]; 


- (void)callObject1Function{ 
    [object1 function1] // Here i am getting "EXC_BAD_ACCESS" 
} 

- (void)dealloc { 
[object1 release]; 
[super dealloc]; 
} 

मुझे समझ में नहीं आया कि मैंने सोचा था कि जब आप dealloc ऑब्जेक्ट से जुड़े सबकुछ को हटाया या रद्द कर दिया जाना चाहिए, यहां तक ​​कि देरी के साथ performSelector भी !! कुछ समझाने कृपया, धन्यवाद .....

उत्तर

27

उपयोग NSObject की:

-cancelPreviousPerformRequestsWithTarget:selector:object: 

किसी भी प्रदर्शन लंबित चयनकर्ताओं को रद्द करने के।

+18

इसके अलावा बस एनएसओब्जेक्ट + रद्द करेंप्रतिफॉर्मफॉर्मफॉर्म्सथिथ लक्ष्य: यदि आप चयनकर्ताओं और ऑब्जेक्ट्स को निर्दिष्ट किए बिना उस लक्ष्य को सभी चयनकर्ताओं को ऑब्जेक्ट निष्पादित करना चाहते हैं – Bogatyr

23

मैंने अपने सभी ऐप्स में निम्नलिखित कोड का उपयोग किया है और यह काम कर रहा है।

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(MethodName) object:nil]; 

धन्यवाद, हेमांग।

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