【发布时间】:2014-09-09 22:27:57
【问题描述】:
我正在试用 Xcode 6 GM Seed 并编译使用网络调用的应用程序。使用适用于 iPhone 5 或 iPad Retina 的 Xcode 6 模拟器时,网络调用一切正常,但奇怪的是,使用 iPhone 6/plus 或 iPad Air 时,调用无法正常工作。我曾尝试在 iOs 7.1 和 8 下编译。如果它在 Xcode 6 或 ios 8 下不起作用,那将是一回事,但我不明白为什么这样的东西在那些模拟器下不起作用.代码如下,但作为注释,我可以看到没有进行网络调用,也没有抛出错误。
更新:它也在 5s 的 sim 卡下发生。但不是 5 或更早版本,也不是非空气 iPad。
-(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];
}
从我尝试的断点来看,这是完全执行的,但正如提到的,在使用 iPhone 6 sim 或 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];
}
}
【问题讨论】:
标签: objective-c ios7 ios8 xcode6