एनएससीएच की कुछ ऑटो-हटाने नीतियां क्या हैं? ऐप्पल के दस्तावेज में उनका उल्लेख नहीं है, और मैंने प्रयोगात्मक रूप से पाया कि एनएससीएच स्मृति चेतावनी का जवाब नहीं देता है।एनएससीएसी ऑटो-हटाने नीति
उत्तर
आप जितना संभव हो सके ब्लैक बॉक्स के रूप में NSCache
का इलाज बंद कर सकते हैं।
से Caching and Purgeable Memory (जोर मेरा):
जब एक कैश करने के लिए आइटम जोड़ने के लिए, आप एक लागत मूल्य निर्दिष्ट कर सकते हैं प्रत्येक कुंजी-मान पेयर के साथ जुड़े होने। सभी कैश किए गए ऑब्जेक्ट्स की लागत के योग के लिए अधिकतम मान निर्धारित करने के लिए
setTotalCostLimit:
विधि पर कॉल करें। इस प्रकार, जब कोई ऑब्जेक्ट जोड़ा जाता है जोtotalCost
कोtotalCostLimit
से ऊपर धक्का देता है, तो कैश थ्रेसहोल्ड के नीचे वापस आने के लिए स्वचालित रूप से अपनी कुछ वस्तुओं को बेदखल कर सकता है। यह निष्कासन प्रक्रिया की गारंटी नहीं है, इसलिए विशिष्ट व्यवहार प्राप्त करने के लिएcost
मानों में हेरफेर करने का प्रयास कैश के प्रदर्शन के लिए हानिकारक हो सकता है।cost
के लिए0
में पास करता है, तो आप कुछ भी नहीं उपयोगी है, याsetObject:forKey:
विधि है, जो एक लागत की आवश्यकता नहीं है में पारित होने के लिए उपयोगनोट:। संख्या सीमा और कुल लागत सीमा नहीं हैं सख्ती से लागू किया। यही है, जब कैश इसकी सीमाओं में से एक पर चला जाता है, तो उसके कुछ ऑब्जेक्ट कैश के कार्यान्वयन विवरण के आधार पर तुरंत, बाद में, या कभी भी बेदखल नहीं हो सकते हैं।
NSCache
UIApplicationDidReceiveMemoryWarningNotification
का जवाब नहीं है, लेकिन वह अपने स्पष्ट रूप से कुछ अन्य प्रणाली का उपयोग कर, कम स्मृति स्थितियों में अपनी वस्तुओं को बेदखल करता है।
जबकि मैंने पहले UIApplicationDidReceiveMemoryWarningNotification
को देखने का सुझाव दिया था, यह मामला नहीं है। कम स्मृति स्थितियों के लिए कोई विशेष हैंडलिंग की आवश्यकता नहीं है, क्योंकि NSCache
स्वचालित रूप से इसे संभालता है।
अद्यतन:
iOS 7 के रूप में, NSCache
न केवल स्मृति चेतावनी का जवाब नहीं है, लेकिन यह भी ठीक से स्मृति दबाव पर ही शुद्ध करने के लिए प्रकट नहीं होता है, या तो (NSCache crashing when memory limit is reached (only on iOS 7) देखें)।
मैं NSCache
उपवर्ग UIApplicationDidReceiveMemoryWarningNotification
निरीक्षण, और स्मृति चेतावनी पर कैश शुद्ध करने के लिए:
@interface AutoPurgeCache : NSCache
@end
@implementation AutoPurgeCache
- (id)init
{
self = [super init];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(removeAllObjects) name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
}
return self;
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil];
// if not ARC, also
//
// [super dealloc];
}
@end
- 1. एनएससीएसी और पृष्ठभूमि
- 2. एनएससीएसी का नाम संपत्ति
- 3. डिस्क में एनएससीएसी सामग्री सहेजें
- 4. ThreadPoolExecutor नीति
- 5. नीति के खिलाफ रणनीति और रणनीति के खिलाफ नीति
- 6. अमरूद कैश बेदखल नीति
- 7. सक्रिय निर्देशिका नीति
- 8. NSURLRequest कैश नीति
- 9. अप्रचलित कैस नीति
- 10. आईओएस कैश नीति
- 11. Powershell: निष्पादन नीति
- 12. एनोटेशन स्रोत अवधारण नीति
- 13. जार नीति फ़ाइल
- 14. स्रोत कोड नियंत्रण नीति
- 15. QtWebkit समान-उत्पत्ति-नीति
- 16. वही मूल नीति
- 17. SAML नाम आईडी नीति
- 18. Jquery .load समान मूल नीति
- 19. फेसबुक टैब पर गोपनीयता नीति
- 20. रिलीज नीति PerWebRequest जीवन शैली
- 21. अपरिचित सामग्री-सुरक्षा-नीति निर्देश
- 22. स्रोत कोड संस्करण संख्या नीति
- 23. सामग्री सुरक्षा नीति: क्रोम एक्सटेंशन
- 24. सी # लिंकिंग समूह नीति AD
- 25. पी 3 पी नीति आईई
- 26. लाइब्रेरीज़ में अपवाद हैंडलिंग नीति
- 27. रनटाइम पर जावा सुरक्षा नीति अद्यतन करें?
- 28. वेबसाइट्स समस्याएं, शायद मूल उत्पत्ति नीति?
- 29. AFNetworking (AFHttpClient) ऑफ़लाइन मोड NSURLRequestReturnCacheDataDontLoad नीति
- 30. सामान्य रिलीज बनाम रखरखाव रिलीज पर नीति?
यह एक अच्छा विचार स्मृति चेतावनी पर निरीक्षण और फिर कैश शुद्ध करने के लिए है? –
@EvilNodoer कुछ प्रयोग करने के बाद, मैंने पाया कि जब यह 'UIAplplicationDidReceiveMemoryWarningNotification' का जवाब नहीं देता है, तो यह वास्तव में कम स्मृति स्थितियों में स्वचालित रूप से अपनी वस्तुओं को बेदखल करता है (कुछ अन्य तंत्र का उपयोग करना चाहिए)। – Rob
@EvilNodoer बीटीडब्लू, मुझे स्मृति दबाव के जवाब में 'एनएससीएसीएच' के बारे में मेरी टिप्पणी वापस लेनी होगी, क्योंकि यह आईओएस 7 में बदल गया है। 'यूआईपीप्लिकेशनडिड रिसीव मेमरीवार्निंग नोटिफिकेशन' का निरीक्षण करना समझदार होगा। Http://stackoverflow.com/questions/19546054/nscache-crashing-when-memory-limit-is-reached-only-on-ios-7 देखें – Rob