2010-06-16 16 views
7

डिवाइस पर इंस्ट्रूमेंट्स का उपयोग करके यह मेरे ऐप में ऐप्पल के रीचैबिलिटी 2.0 कोड का उपयोग करके 3.50 केबी मेमोरी रिसाव का पता लगाता है। लीक ऑब्जेक्ट जनरलब्लॉक -3584 है। निम्नलिखित कोड को लीक उपकरण अंक:रीचैबिलिटी का उपयोग कर बड़ी मेमोरी लीक

- (BOOL) startNotifer 
{ 
    BOOL retVal = NO; 
    SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; 
    if(SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context)) 
    { 
     // THIS IS LINE OF CODE WHERE THE LEAK OCCURS: 
     if(SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)) 
     { 
      retVal = YES; 
     } 
    } 
    return retVal; 
} 

मैं काफी सीधे एप्पल उदाहरण कोड से गम्यता उदाहरण उपयोग कर रहा हूँ तो मैं समझ नहीं क्यों यह या हो रहा है कि कैसे मैं इसे ठीक कर रहा है।

उत्तर

6

GeneralBlock-3584 लीक (जाँच http://devforums.apple.com, और अपने एनडीए मन) डेवलपर मंचों पर आधिकारिक एप्पल बयान, नहीं एक असली रिसाव और वास्तव में एक उपकरण में बग के अनुसार, कर रहे हैं।

1

एनएसयूटोआरईलीपूल के साथ यू रीचैबिलिटी ऑब्जेक्ट को लपेटने का प्रयास करें। यदि यह अभी भी मौजूद है तो ऑटोकलीपूल के साथ लीक की ओर संकुचित करने का प्रयास करें।

+1

क्यों? जब तक आप अपने धागे को फोर्क नहीं करते हैं, तब तक एक NSAutoReleasePool है। इसे लपेटने से मदद नहीं मिलेगी। – GorillaPatch

0

मुझे लगता है कि यह question पर एक समान समस्या है। असल में ऐसा लगता है कि यह सीएफनेटवर्क के भीतर एक बग है और यह ओएस, पर निर्भर करता है इसलिए कोई कामकाज नहीं है। ऐप्पल को इसे ठीक करना है।

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