静态库中的 NSURLConnection sendAsynchronousRequest 在模拟器上崩溃
NSURLConnection sendAsynchronousRequest in static library crashes on simulator
我正在编译一个包含以下内容的静态库(FAT 二进制文件):
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init]; // also tried [NSOperationQueue mainQueue]
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
// CRASH BEFORE BLOCK EXECUTES
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
...
如果使用设备和模拟器上的应用程序编译,代码本身运行良好,但仅在模拟器上用作另一个应用程序中的静态库时,代码会崩溃。静态库在 iOS 设备上运行良好。崩溃是 EXC_BAD_ACCESS
,通过做一些日志记录,我将它缩小到 sendAsynchronousRequest
。该块未被调用。
知道哪里出了问题吗?
您创建自己的队列是否有原因?尝试使用 [NSOperationQueue mainQueue]
作为队列
我可以改用 NSURLConnectionDelegate
方法来修复它。我仍然想知道它为什么会崩溃,如果您有任何想法,请发表评论。
我正在编译一个包含以下内容的静态库(FAT 二进制文件):
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init]; // also tried [NSOperationQueue mainQueue]
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
// CRASH BEFORE BLOCK EXECUTES
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
...
如果使用设备和模拟器上的应用程序编译,代码本身运行良好,但仅在模拟器上用作另一个应用程序中的静态库时,代码会崩溃。静态库在 iOS 设备上运行良好。崩溃是 EXC_BAD_ACCESS
,通过做一些日志记录,我将它缩小到 sendAsynchronousRequest
。该块未被调用。
知道哪里出了问题吗?
您创建自己的队列是否有原因?尝试使用 [NSOperationQueue mainQueue]
作为队列
我可以改用 NSURLConnectionDelegate
方法来修复它。我仍然想知道它为什么会崩溃,如果您有任何想法,请发表评论。