iphone - NSDecimalNumber leaks memory if not used with AutoRelease pool? -
NSString * str = [[NSString alloc] initWithString: @ "0.05"]; NSDecimalNumber * num = [[NSDecimalNumber alloc] initWithString: str]; एनएसएलॉग (@ "% @", संख्या); [आरआर रिलीज]; [अंक रिहाई];
लीक मेमोरी
*** __NSAutoreleaseNoPool (): वर्ग के ऑब्जेक्ट 0x707990 NSCFString स्थान में कोई पूल के साथ autoreleased - बस लीक
पूर्व>क्या कोई एक वैकल्पिक हल सुझा सकता है?
दूसरों ने क्या कहा; अपने कोड को एनएसएयूटेरियरेपिपल के साथ लपेटें एक NSAutoreleasePool वास्तव में आश्चर्यजनक रूप से कुशल है; बहुत कम उपरि होगा। आप ऐसा नहीं कहना चाहते हैं, एक के साथ कोड की हर कुछ पंक्तियों को घेरना है, लेकिन यह संभावना नहीं है कि वे सामान्य उपयोग में औसत दर्जे वाले होंगे।
फाउंडेशन का उपयोग बिना ऑटोरेव्यूज पूल
नीचे वह पथ पागलपन है भेजा मत खा। ज़रूर - कभी-कभी पूल के उपयोग को कम करने में कुछ प्रयास करने का एक अच्छा विचार होता है, लेकिन ऐसे कई मामले होंगे- जहां यह एक अपरिहार्य है।
नहीं, वास्तव में, मैं ' मजाक नहीं कर रहा हूँ:
मैंने कई साल पहले सी ++ संचार लाइब्रेरी लिखी है यह हर बार नेटवर्क इवेंट (कभी-कभी एक नव निर्मित धागा) में वापस कॉल करता है। आपकी सलाह मेरे आवेदन के प्रदर्शन पर विनाशकारी प्रभाव पड़ती है।
मेरा जवाब सलाह नहीं था, यह सटीक नियमों का एक बहुत विशिष्ट विवरण था जिसके द्वारा कोको चौखटे लागू होते हैं। संयोग से पहले आपका कोड काम करता था हालांकि, निश्चित रूप से एक व्यवहार परिवर्तन है, लेकिन नियमों का पालन करने वाले कोड के लिए यह एक प्रतिगमन नहीं है।
इस तरह से मनमानी थ्रेडिंग कोको (अच्छी तरह, वास्तव में, कहीं भी) में काफी जोखिम भरा है। मैंने इस तरह के एकीकरण कई बार किए हैं और आम तौर पर संगामिति की जरूरतों के आधार पर एक या एक से अधिक कतार में घटनाओं को संभालने का सबसे अच्छा समाधान मिल गया है। फिर कतार ऑटोरिवेट पूल के साथ समय-समय पर काम करने का ध्यान रख सकता है।
बेशक, आप जो वर्णन करते हैं, वास्तव में मनमाने ढंग से सूत्रण करने के लिए डेटा को कतार के धागे पर ले जाने के लिए कुछ तंत्र की आवश्यकता होगी ....
Comments
Post a Comment