我正在產生一個線程來查找我的iPad應用程序中的Web服務(SOAP)的數據。響應被解析成帶有NSDictionary成員對象的NSArray。如果我同時調用我的服務和解析,它將按預期工作。現在我必須啓動一個後臺線程,當lookup-thread釋放它的池並且我的主線程的UITableView試圖顯示數據(reloadData被調用)時,我會從主線程中退出。iOS:我是否必須將查找線程的NSAutoreleasePool的結果複製到主線程?
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
^------------- Thread 1: Program received signal: EXC_BAD_ACCESS
[pool release];
return retVal;
}
我的猜測是解析結果已經由池泄漏發佈。我必須從一個區域複製到另一個區域嗎?這是一個龐大的結構,深層複製將會很昂貴。
我還應該如何獲得後臺線程來安全地爲主線程中的UITableView構建數據源?
我已經從線程回調到發出線程請求的對象。我的問題是將解析的對象從後臺線程中取出並且由主應用程序穩定(即保留)---或者......我是否必須從一個池複製到另一個池? – mobibob