में लोड होने वाले लीकी नल को कैसे ढूंढें मैं लीक्स के साथ गड़बड़ कर रहा हूं कि यह पता लगाने की कोशिश कर रहा है कि कौन सा फ़ंक्शन अस्वीकृत नहीं किया जा रहा है (मैं अभी भी इसके लिए नया हूं) और वास्तव में कुछ अनुभवी अंतर्दृष्टि का उपयोग कर सकता हूं।मॉलोक 32kb
मेरे पास यह कोड है जो अपराधी प्रतीत होता है। हर बार जब मैं इस कोड को कॉल करने वाला बटन दबाता हूं, तो 32kb स्मृति को अतिरिक्त रूप से स्मृति में आवंटित किया जाता है और जब बटन जारी किया जाता है तो स्मृति को हटाया नहीं जाता है।
मैं क्या पाया गया कि हर कि AVAudioPlayer
M4A फ़ाइल खेलने के लिए कहा जाता है था, m4a फ़ाइल को पार्स करने अंतिम समारोह MP4BoxParser::Initialize()
है और इस बदले में Cached_DataSource::ReadBytes
मेरा प्रश्न है, कैसे करना है के माध्यम से स्मृति के 32 केबी आवंटित मैं इस बात को खत्म करने के बारे में सोचता हूं कि यह समाप्त हो जाने के बाद यह बटन दबाए जाने पर हर बार 32 केबी आवंटित नहीं करता है?
कोई भी सहायता जो आप प्रदान कर सकते हैं उसकी बहुत सराहना की जाती है!
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//stop playing
theAudio.stop;
// cancel any pending handleSingleTap messages
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(handleSingleTap) object:nil];
UITouch* touch = [[event allTouches] anyObject];
NSString* filename = [g_AppsList objectAtIndex: [touch view].tag];
NSString *path = [[NSBundle mainBundle] pathForResource: filename ofType:@"m4a"];
theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio prepareToPlay];
[theAudio setNumberOfLoops:-1];
[theAudio setVolume: g_Volume];
[theAudio play];
}
क्या आप समझा सकते हैं कि आप किस 'init' विधि का जिक्र कर रहे हैं? (दोबारा, खेद है कि मैं इस पर बहुत नया हूं) – iwasrobbed
और यह भी सत्यापित करने के लिए कि मैं इसे समझता हूं: आप जो कह रहे हैं वह है कि मुझे ऑडियो को अतिरिक्त आवंटित चर में लोड करने की आवश्यकता है ताकि मैं वर्तमान को रद्द करने की कोशिश नहीं कर रहा हूं m4a फ़ाइल (या अंत में स्मृति का एक विलुप्त टुकड़ा कॉल करें) मुझे लगता है कि मेरा प्रश्न है, क्या 'ऑडियो' अभी भी अतिरिक्त स्मृति आवंटित करेगा क्योंकि इसे 'dealloc()' कहा जाता है जब तक इसे डेलोकेट नहीं किया जाता है? – iwasrobbed
आम तौर पर बोलते हुए, प्रत्येक नियंत्रक में '-init' और' dealloc' विधि दोनों होती है। क्या मैं इसे 'UIViewController' के रूप में मान सकता हूं? यदि ऐसा है, तो ओवरराइड करने के लिए उचित तरीका है -इनिटविथनिबनाम: बंडल: दूसरा विकल्प है कि आप अपने ivar को 'viewDidLoad' विधि में शून्य पर सेट करें। –