我正在试用Xcode6GM Seed并编译我的应用程序,该应用程序使用网络调用。当使用iPhone 5或iPad Retina的Xcode6模拟器时,网络调用一切正常,但奇怪的是,当使用iPhone 6/plus或iPad Air时,调用不起作用。我尝试过在iOS7.1和iOS8下编译,如果不能在Xcode6或iOS8下运行,那是一回事,但我不明白为什么这样的东西不能在这些模拟器下运行。代码如下,但作为说明,我可以看到没有进行网络调用,也没有抛出错误。
更新:它也在5s的SIM卡下。但不是5或更早的版本,也不是非air的iPads。
-(void)getActiveChannels
{
NSString *externalURL = @"https://www.mywebservice.com";
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:externalURL]];
request.HTTPMethod = @"POST";
[request setValue:@"application/x-www-form-urlencoded;charset=utf-8" forHTTPHeaderField:@"Content-Type"];
NSString *postDataStr = [NSString stringWithFormat:@"auth=%s",AUTH_CODE];
NSData *requestBodyData = [postDataStr dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:requestBodyData];
NSURLSessionDataTask *postDataTask = [self.session dataTaskWithRequest:request];
[postDataTask setTaskDescription:@"getActiveChannels"];
[postDataTask resume];
}从中断点开始,我尝试过这是完全执行的,但如前所述,当使用theiPhone 6sim或iPad Air时,它实际上从来没有调用过URL。
下面是使用返回数据的方法,尽管它也不会走得那么远。
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
{
self.channelDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
}
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
NSLog(@"%@",task.taskDescription);
if ([task.taskDescription isEqualToString:@"getActiveChannels"])
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"channelsReady"
object:self.channelDict];
}
}发布于 2014-09-10 12:55:51
我找到了答案,但找不到原因。NSURLSessionConfiguration和NSURLSession均为零。我将两个都设置为“弱”,因为当它们“强”时,就会有泄漏。为什么这在一些iphone sims中不是问题,而在另一些iphone sims中却是一个问题,这对我来说是一个谜。
https://stackoverflow.com/questions/25754544
复制相似问题