I have some network code that has been reliable on several versions of iOS before iOS 12. The code listed below fails with an EXC_BAD_ACCESS when called on device running iOS 12 when WIFI is turned off. Has anyone else encountered this issue? The code is based on code that Apple posted in one of the developer forums. Here's a link to the reference code:
https://forums.developer.apple.com/thread/11519
- (NSData *)sendPostRequestImpl:(NSURLRequest *)request returningResponse:(NSURLResponse * __autoreleasing *)outResponse onError:(NSError * __autoreleasing *)outError
{
// Uses either NSURLConnection or NSURLSession depending on the iOS version detected
NSData *responseData = nil;
if ([self useNSURLConnection]) {
responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:outResponse error:outError];
} else {
__block NSData *sessionResponseData = nil;
__block dispatch_semaphore_t requestSemaphore;
requestSemaphore = dispatch_semaphore_create(0);
NSURLSessionDataTask *postRequestTask = [ _session dataTaskWithRequest:request completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
if (error && outError) {
NSInteger errorCode = 13001;
*outError = [NSError errorWithDomain:error.domain code:errorCode userInfo:error.userInfo];
} else if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
sessionResponseData = data;
if (response && outResponse) {
*outResponse = response;
}
}
dispatch_semaphore_signal(requestSemaphore);
}];
[postRequestTask resume];
dispatch_semaphore_wait(requestSemaphore, DISPATCH_TIME_FOREVER);
responseData = sessionResponseData;
}
return responseData;
}