से लोड एनएसडीटा को कभी भी रिलीज़ नहीं करता है इसलिए मैं कुछ छवियों को स्टोर करने के लिए Core Data
का उपयोग करता हूं। (इसके अलावा उपवर्ग mogenerator
नवीनतम के साथ उत्पन्न होता है)कोर डेटा बाहरी स्टोरेज
(और यह भी मैं एआरसी उपयोग कर रहा हूँ)
हाँ मैं जानता हूँ कि मैं सिर्फ एक संदर्भ रखने के लिए और डिस्क पर संग्रहीत सकता है, लेकिन मैंने सोचा था कि:
"अरे उन्होंने एक विकल्प बनाया ताकि मैं इसे स्वयं प्रबंधित कर सकूं!"
तो मैंने इसे आजमाया और यह पूरी तरह से काम करता है कि कभी भी जारी नहीं किया गया है।
ViewController जो वाला छवियों को प्रदर्शित करने के आरोप में हो रहा है के प्रारंभ में मैं यह हमेशा की तरह मुख्य NSManagedObjectContext
दे।
और viewDidAppear
में मैं छवियों के साथ UIScrollView
की स्थापना की एक विधि कहा जाता है में:
संपादित करें: तो यह वास्तव में एक लाने का अनुरोध मैं एक Entity1
है जो नहीं है एक-से-कई छवियों और मैं साथ छवियों को पाने के लिए इसका उपयोग करें मुझे यह इकाई 1 उसी संदर्भ से प्राप्त होती है। मैं बस बेहतर व्याख्या करने के लिए सरल बनाना चाहता था।
- (void)setupScrollViewWithEntity1:(Entity1 *)entity1 {
DDLogVerbose(@"-- %@ : SETUP SCROLL VIEW --", self);
// I remove any previous subviews
[self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
self.scrollView.contentSize = self.scrollView.frame.size;
/* Here I get the imagesArray with a NSFetchRequest */
//So it's not really a fetch request I have an `Entity1` which have one-to-many with images and I use it to get the images
NSSet *imagesSet = entity1.images;
// So I have an NSArray holding all the Image object
for (Image *image in imagesSet) {
CGRect frame = self.scrollView.frame;
frame.origin.x = image.numberValue*frame.size.width;
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:frame];
scrollView.contentSize = self.scrollView.frame.size;
UIImageView *imageView = [[UIImageView alloc]initWithFrame:self.scrollView.frame];
imageView.image = [UIImage imageWithData:image.image];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.userInteractionEnabled = YES;
[scrollView addSubview:imageView];
scrollView.delegate = self;
scrollView.minimumZoomScale = 1.0;
scrollView.maximumZoomScale = 3.0;
[self.scrollView addSubview:scrollView];
}
}
}
viewWillDisappear
में मैं NSManagedObjectContext
बचाने के लिए और मैं जब नियंत्रक dealloc'ed हो जाता है उम्मीद करेंगे सभी डेटा भी होता है, लेकिन यह हमेशा के लिए स्मृति में ही बनी रहे।
यह लाइन किसी भी तरह रखती है यह पता नहीं क्यों: imageView.image = [UIImage imageWithData:image.image];
मैं इस पर 3 दिन बिताए अगर मैं एक मजबूत संदर्भ कहीं नहीं रख था सब कुछ, Instruments
, फिर से जांचा उपयोग करने के लिए कोशिश कर रहा।
बात UIViewController
हो जाता है dealloc
'एड कि मैं, मैं Allocation
उपकरण के साथ Instruments
में देख यकीन है, लेकिन किसी कारण से डेटा एप्लिकेशन दुर्घटनाओं जब तक हमेशा के लिए स्मृति में रहता है।
यहाँ की सूची है ~ स्मृति में 20 छवियों dealloc'ed हो रही नहीं:
और यहाँ है पहली वस्तु के लिए विवरण:
यहां तक पढ़ने के लिए धन्यवाद, मैं हूं वास्तव में हताश :(
क्या आप आर्क का उपयोग कर रहे हैं? – J2theC
हां मैं इसका उल्लेख करना भूल गया लेकिन मैंने इसे टैग किया है कि मुझे इसे संपादित करने दें – ItsASecret
क्या प्रबंधित ऑब्जेक्ट संदर्भ दृश्य नियंत्रक से परे जीवित रहता है? यदि ऐसा है तो क्या संभव है कि आपको परिपत्र संदर्भों के साथ ऑब्जेक्ट ग्राफ़ मिल गया हो और आप स्पष्ट रूप से अपनी ऑब्जेक्ट को गलती करने में असफल हो रहे हैं? – Tommy