2011-11-29 12 views
5

इंस्ट्रूमेंट्स (लीक्स) TWRequest का उपयोग करते समय मेमोरी लीक की रिपोर्ट करता है और मैं वास्तव में यह नहीं देख सकता कि मैं क्या गलत कर रहा हूं।गैर-एआरसी परियोजनाओं में उपयोग किए जाने पर TWRequest रिसाव प्रतीत होता है

यहाँ समस्या को ठीक करने कदम हैं:

एक नया Xcode प्रोजेक्ट बनाएँ (एआरसी विकलांग), कोड के लिए ट्विटर फ्रेमवर्क जोड़ने और फिर हाल ही में जोड़े निम्न पंक्तियां (viewDidLoad में जैसे):

TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"] parameters:nil requestMethod:TWRequestMethodGET]; 

[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
    NSLog(@"in performrequest"); 

    [postRequest release]; 
}]; 

उपकरण (लीक) के साथ इस कोड की रूपरेखा के बाद, यह मुझे बता रहा है कि "performRequestWithHandler" के साथ लाइन लीक है:

Instruments screenshot

Marked line

इस रिसाव को रोकने के लिए क्या करना है कोई विचार?

मुझे एक समान प्रश्न here मिला लेकिन ऐसा लगता है कि मैं जिस समस्या का वर्णन कर रहा हूं उससे असंबंधित प्रतीत होता है।

उत्तर

2

मुझे यकीन नहीं है कि उपकरण इसे रिसाव के रूप में क्यों चुनते हैं लेकिन आप पूर्णता ब्लॉक के बाहर अनुरोध जारी कर सकते हैं। एक बार अनुरोध शुरू होने के बाद, इसे पूरा होने तक कनेक्शन द्वारा बनाए रखा जाता है जब तक कि समापन ब्लॉक निष्पादित नहीं किया जाता है। अपना कोड इस पर बदलें:

TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"] parameters:nil requestMethod:TWRequestMethodGET]; 

[postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { 
    NSLog(@"in performrequest"); 
}]; 

[postRequest release]; 

यदि यह रिसाव को समाप्त करता है तो मुझे आश्चर्य नहीं होगा।

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

  • कोई संबंधित समस्या नहीं^_^