objective c - if my retainCount is 4 is that bad for iphone -


अपडेट कोड

  - (शून्य) searchBarSearchButtonClicked: (UISearchBar *) theSearchBar {mytimer3 = [एनएसटीमीटर अनुसूचित टाइमर विथटाइम इंटरफ़ेयर: .03 लक्ष्य: स्वयं चयनकर्ता: @ सिलेक्टर (शो) यूज़र इंक: शून्य दोहराता है: नहीं]; एनएसएलॉग (@ "खोज डाउन है"); //////////// कुंजीपटल धारण करने के लिए rv / / ov नियंत्रक view.backgroundColor = [UIColor grayColor]; Self.tableView.scrollEnabled = नहीं; यूज़रटेक्स्ट = [सेल्फ .searchDisplayController.searchBar टेक्स्ट]; MyInt = UserText.length; // int myInt = [बचाने के लिए]; // NSString * myStringPrt1 = [[NSString alloc] init]; // NSString * myStringPrt2 = [[NSString alloc] init]; अगर (UserText.length & gt; 3) {//[ovController.view को निकालनाप्रोमसेपिव्यू]; // [टेबलव्यू पुनः लोडडेटा]; यूआरएल = nil; // myStringPrt1 = @ "http: //find.php? कीवर्ड ="; NSString * myStringPrt2 = UserText; // myStringPrt1 = [myStringPrt1 स्ट्रिंगबैपिंगटिंग स्ट्रिंग: myStringPrt2]; // myStringPrt1 = [myStringPrt1 स्ट्रिंगबैऐडिंगपरसेंट स्केपसउपिंग एन्कोडिंग: NSUTF8 स्ट्रिंग एन्कोडिंग]; // loadingView.hidden = NO; NSString * outputString = [[NSString stringWithString: @ "http: //find.php? कीवर्ड ="] स्ट्रिंगबैपिंग स्ट्रींग: यूज़रटेक्स्ट]; आउटपुट स्ट्रिंग = [आउटपुट स्ट्रिंग स्ट्रिंगबैडिंगपेरेंट एस्कैपउपिंग एन्कोडिंग: एनएसयूटीएफ 8 स्ट्रींग एन्कोडिंग]; एनएसएलॉग (@ "माई स्ट्रिंग अब =% @", आउटपुट स्ट्रिंग); Url = [NSURL URLWithString: outputString]; NSXMLParser * xmlParser = [[[NSXMLParser alloc] initWithContentsOfURL: url] autorelease]; // प्रतिनिधि शुरू करें। XMLParser * पार्स = [[[XMLParser alloc] initXMLParser] ऑटोरेक्ज]; // सेट प्रतिनिधि [xmlParser setDelegate: parser]; // एक्सएमएल फ़ाइल को प्रारंभ करना प्रारंभ करें BOOL सफलता = [xmlParser पार्स]; अगर (सफलता) {[सुपर देखेंडिडलोड]; [स्व खोजटेबलदृश्य]; Mytimer4 = [NSTimer अनुसूचित टाइमर विथटाइम अंतराल: 1.0 लक्ष्य: स्वयं चयनकर्ता: @ सिलेक्टर (पोंछ) userInfo: शून्य दोहराता है: नहीं]; }}  

}

ठीक है, आपके पास स्मृति लीक सब है जगह पर:

<पूर्व> NSString * myStringPrt1 = [[NSString alloc] init]; NSString * myStringPrt2 = [[NSString alloc] init]; यूआरएल = nil; myStringPrt1 = @ "? http: // वैप कीवर्ड ="; // मेमोरियल लीक, यह myStringPrt1 को एक नई स्ट्रिंग प्रदान करेगा, बिना किसी MyStringPrt2 = UserText रिलीज़ किए; // मेमोरियल लीक, यह myStringPrt2 को एक नई स्ट्रिंग प्रदान करेगा, पहले एक MyStringPrt1 = [myStringPrt1 स्ट्रिंगबैपिंगटिंग स्ट्रिंग: myStringPrt2] जारी किए बिना; // मेमोरियल लीक, यह एक ऑटोरेलेज़ स्ट्रिंग mystringPrt1 को बिना किसी पुराने रिलीज़ किए बिना ले जाएगा। MyStringPrt1 = [myStringPrt1 स्ट्रिंगबैडिंगप्रर्सेंट एस्केपसउपिंग एन्कोडिंग: एनएसयूटीएफ 8 स्ट्रिंग एन्कोडिंग]; // मेमोरियल लीक, यह एक ऑटोरेलेज़ स्ट्रिंग mystringPrt1 को बिना किसी पुराने रिलीज़ किए बिना ले जाएगा।

मेरा सुझाव है कि कुबी द्वारा दर्शाए गए अनुसार स्मृति प्रबंधन दिशानिर्देशों को पहले पढ़ा। या, यदि आप आलसी महसूस कर रहे हैं, तो इसका प्रयोग करें:

  NSString * outputString = [[NSString stringWithString: @ "http: // wap? कीवर्ड ="] stringByAppendingString: UserText]; आउटपुट स्ट्रिंग = [आउटपुट स्ट्रिंग स्ट्रिंगबैडिंगपेरेंट एस्कैपउपिंग एन्कोडिंग: एनएसयूटीएफ 8 स्ट्रींग एन्कोडिंग];  

या यह:

  NSString * outputString = [NSString stringWithFormat: @ "http: // wap? कीवर्ड =% @", यूज़रटेक्स्ट]; आउटपुट स्ट्रिंग = [आउटपुट स्ट्रिंग स्ट्रिंगबैडिंगपेरेंट एस्कैपउपिंग एन्कोडिंग: एनएसयूटीएफ 8 स्ट्रींग एन्कोडिंग];  

Comments