में कोई रिपोर्टिंग नहीं है यदि मैं जगह पर कोई ऑटोरेलीज पूल नहीं है तो मैं परिदृश्य पकड़ने की कोशिश कर रहा हूं।
यह मेरा परीक्षण ऐप है।AutoreleasePool ब्रेकपॉइंट्स को पकड़ नहीं रहा, कोई चेतावनी नहीं, इंस्ट्रूमेंट्स लीक्स
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[self performSelectorInBackground:@selector(bgOperation:) withObject:nil];
}
- (void)bgOperation:(id)obj
{
NSString *string [[[NSString alloc] init] autorelease];
}
मैंने ब्रेकपॉइंट objc_autoreleaseNoPool को सेट करने का प्रयास किया है।
मैंने उपकरण/लीक के साथ प्रोफाइलिंग करने का प्रयास किया है।
ओएसएक्स 10.7.5 एक्सकोड 4.3.3 लक्ष्य 10.6, स्वचालित रीफकाउंटिंग = नहीं, कचरा चयन = असमर्थित।
मैं समझता हूं कि एनएसएप्लिकेशंस में इसका अपना ऑटोोरिज़ पूल शामिल है। लेकिन मेरी समझ यह थी कि प्रत्येक कॉल करने के लिए चयनकर्ताइबैकग्राउंड: इसे अपने स्वयं के ऑटोोरिज़ पूल की आवश्यकता होती है।
सुझावों सेअद्यतन:
मैं इस कोशिश की ..
main.m में , कोई भाग्य।
int main(int argc, char *argv[])
{
NSString *junk = [[[NSString alloc]init]autorelease];
return NSApplicationMain(argc, (const char **)argv);
}
और यह ..
मेरे AppDelegate में, यह भी कोई परिणाम।
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[NSThread detachNewThreadSelector:@selector(bgOperation:)
toTarget:self
withObject:nil];
}
और यह ..
मेरी main.m में pthreads
void *doJunk(void *ptr){
NSString *junk = [[[NSString alloc]initWithString:@"string with no pool"]autorelease];
NSLog(@"%@", junk);
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
pthread_t thread;
pthread_create(&thread, NULL, doJunk, NULL);
return NSApplicationMain(argc, (const char **)argv);
}
मैं समझता हूँ कि इसके साथ ही कारण ओएस स्तर हो सकता है कुछ भी नहीं लीक कर रहा है (अब भी पुष्टि नहीं की है), लेकिन जब मैं करने के लिए लक्ष्य 10.6 मुझे लॉग में कई "पूल नहीं" संदेश दिखाई देते हैं। यदि यह ओएस स्तर के कारण केवल लीक हो जाता है, तो मुझे इन परिदृश्यों को 10.7 में पकड़ने का एक तरीका चाहिए जब मैं 10.6 को लक्षित कर रहा हूं लेकिन 10.7 एसडीके का उपयोग कर रहा हूं।
क्या आपने लॉग में "बस लीकिंग" संदेशों की तलाश की है? –
मैं केवल उन्हें देख सकता हूं जब मैं ऐप चलाता हूं और कंसोल को 10.6 में देखता हूं। – estobbart