개체가 있고 해당 개체에서 일부 스레드로드를 수행하기 위해 스레드를 시작합니다.두 번째 호출에서 NSThread 충돌 (iPhone)
데이터를 반환 할 때 주 스레드에서 수행 할 선택자를 호출합니다.
첫 번째 호출에서는 올바르게 작동하지만 두 번째로는 오류가 발생하지 않습니다 (특정 오류 없음). 내가 performSelectorOnMaintThread
를 호출 할 때
[NSThread detachNewThreadSelector:@selector(doThread:)
toTarget:self
withObject:@"lala"];
-(void) doThread:(NSString *)poststring {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
DataModelLocator *mydelegate = [DataModelLocator instance];
NSData *postData = [poststring dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];
NSURL *url = [NSURL URLWithString:[mydelegate fwaservicepath]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[request setHTTPBody:postData];
NSURLResponse *urlResponse;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:nil];
if(data) {
[self performSelectorOnMainThread:@selector(loadDidFinishWithData:)
withObject:data
waitUntilDone:YES];
//[self loadDidFinishWithData:data];
} else {
[self performSelectorOnMainThread:@selector(loadDidFinishWithError:)
withObject:data
waitUntilDone:YES];
}
[pool release];
}
}
그것은이 출시 왔을 때,이 싱글에 충돌하는 것이 될 수 ... 충돌?
또한 프레임 워크의 많은 메소드가 자동 반복 객체를 작성하기 때문에 누출을 피하기 위해 스레드 당 최소 하나의 자동 해제 풀을 작성해야합니다 (수명이 긴 스레드가 자주 유출되는 경우) – rpetrich