因此,我正在使用[NSThread detachNewThreadSelector]產生一個新線程,並在控制檯中得到「無地方自動釋放」錯誤。我知道如果您未能創建自動發佈池,可能會發生這種情況,但事實是,我正在創建一個。我在同一個應用程序的其他部分使用類似的代碼,不會得到這些錯誤。iOS自動釋放,沒有池 - 但我創建ARP!
下面是相關代碼:
- (void) startThread:(NSString*)strURL
{
// start new thread to load image
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[NSThread detachNewThreadSelector:@selector(loadImageFromURL:) toTarget:self withObject:strURL];
[pool release];
}
- (void) loadImageFromURL:(NSString*)strURL
{
NSNumber* nn = [NSNumber numberWithInt:self.tag];
NSLog(@"loadURL: Tag number == %i", [nn intValue]);
// other code here actually does the work
}
現在,在loadImageFromURL更多的代碼實際上做的工作(加載從遠程服務器的圖像) - 但問題表現沒有代碼,所以我刪除了它(只是所以你不認爲我有一個毫無意義的線程,它什麼都不做!)。我只留下了一行代碼,它演示了這個問題 - 它創建了一個自動發佈的NSNumber對象。
運行此代碼時,它報告給控制檯:
__NSAutoreleaseNoPool(): Object 0x535c0e0 of class NSCFNumber autoreleased with no pool in place - just leaking
當然,真正的代碼創造了許多其他的AR對象,他們都得到報告爲好。
將不勝感激的任何提示或指針可能會有所幫助!
謝謝!
卡爾 - 我爲浪費你的時間表示歉意。你當然是對的。 * IS *我在使用detachNewThreadSelector的應用程序的其他部分如何做。只是看不到樹林。我被固定在錯誤的模式上,從來沒有看過我的其他代碼,我確信它是一樣的。謝謝你快速的回覆! – Jordan 2011-01-24 18:38:56