我需要对某个网址进行几次https调用。所以我做这样的事情
//ViewController Source
-(IBAction) updateButton_tapped {
[self performSelectorInBackground:@selector(updateStuff) withObject:nil];
}
-(void) updateStuff {
// do other stuff here...
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:self.url]];
[request setHTTPMethod:@"POST"];
NSData *postData = [[Base64 encodeBase64WithData:payload] dataUsingEncoding:NSASCIIStringEncoding];
[request setHTTPBody:postData];
NSURLResponse* response = [[NSURLResponse alloc] init];
NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
//Process the recieved data...
//Setup another synchronous request
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
//Process data
//do this another 4 times (note for loop cannot be use in my case ;) )
//Finally update some view controllers
[[NSNotificationCenter defaultCenter] postNotificationName:@"NotificationIdentifier" object:self];
}
因此,此代码的问题是它随机崩溃(并非总是崩溃,但经常崩溃)。我在日志上没有调试输出。有时我的整个应用程序死机,或者只是崩溃了整个程序。但是,如果我在主线程上运行它,它将永远不会崩溃。因此,我认为代码是正确的,现在我想它与iphone上的线程有关。
以这种方式运行代码时,可能会发生什么问题,以及可能导致随机崩溃的原因?
最佳答案
内存管理,分配后不释放请求或响应对象。
关于ios - iOS:具有performSelectorInBackground的sendSynchronousRequest,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9264699/