में मैं एक साधारण UIViewController कि बनाता है और एक GMSMapView नष्ट कर देता है बनाया है।स्मृति रिसाव GMSMapView
- (void)viewDidAppear:(BOOL)animated
{
if (!m_disappearing_bc_segue)
{
[super viewDidAppear:animated] ;
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude: self.location.latitude
longitude: self.location.longitude
zoom:9 ] ;
m_mapView = [GMSMapView mapWithFrame:CGRectMake(0, 0, 320, 420) camera:camera];
m_mapView.myLocationEnabled = NO ;
[m_mapView setMapType: kGMSTypeTerrain] ;
m_mapView.delegate = self ;
[self.view addSubview:m_mapView] ;
[self.view sendSubviewToBack:m_mapView] ;
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated] ;
[m_mapView clear] ;
[m_mapView stopRendering] ;
[m_mapView removeFromSuperview] ;
m_mapView = nil ;
}
मैंने आवंटन उपकरण के साथ उपकरण का उपयोग किया है। परीक्षण आसान है। एक UINavigation ViewController में, दृश्य को दबाएं, वापस हिट करें और दोहराएं। हर बार जब आप ऊपर वर्णित GMSMapView युक्त दृश्य को धक्का देते हैं और पॉप करते हैं तो लगभग 40kb रिसाव होता है। मेरे पास यह चित्रण करने के लिए इंस्ट्रूमेंट्स से एक स्क्रीनशॉट है, लेकिन स्टैक ओवरफ्लो मुझे इसे पोस्ट करने की अनुमति नहीं देता है। यदि दिलचस्पी है तो मैं ईमेल द्वारा किसी को भेज सकता हूं।
मैं कुछ गलत कर या कुछ लाभ नहीं ले पा रहा हूं?
आप हर बार 'पुनः बनाना GMSMapView' आवश्यकता क्यों है? –
m_mapView.delegate = nil जोड़ने का कोई भी मौका; कहने से पहले m_mapView = nil इसे हल करेगा? यह ... –
@ सेर्गेई कुरानोव मूल रूप से मुक्त स्मृति के लिए हो सकता है। प्रत्येक GMSMapView कुछ गंभीर स्मृति का उपभोग करता है। मेरे पास मिनी-व्यू (स्क्रीन का आधा) है और एक बटन आपको अधिकतम संस्करण देखने के लिए ड्राइव करता है। जब मैं अधिकतम संस्करण से वापस आ जाता हूं, तो मैं इसे फेंकना चाहता हूं। – user2101384