这是我的基础测试应用程序的完整代码:(缩小到可能的最小值)
#import <Foundation/Foundation.h>
#import "AFNetworking.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://www.ansa.it" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"success");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"failure");
}];
// Trying both with -waitUntilAllOperationsAreFinished and with making the main thread sleep
[manager.operationQueue waitUntilAllOperationsAreFinished];
//[NSThread sleepForTimeInterval:5];
NSLog(@"Die!");
}
return 0;
}
我可以看到请求开始(LittleSnitch显示对ansa.it的连接尝试 - 测试域),但是没有调用完成块。
另外,如果我尝试在AFHTTPRequestOperation类(https://github.com/AFNetworking/AFNetworking/blob/bb39a33ba242b50a2d779e37b4a836f4471160a5/AFNetworking/AFHTTPRequestOperation.m#L115第115行)内的完成块上设置断点,我看到它永远不会被调用。
在进程终止之前有足够的时间,无论如何我通过告诉主线程等待队列完成和/或暂停来确保在请求完成之前不会发生这种情况。主线。
我正在开发OSX 10.10 Yosemite GM 2.0(最后一个版本,直到3小时前),XCode 6.1 GM在x86_64上。
我在AFNetworking的最后一个稳定版本(写作时为2.4.1)和主分支上的代码都出错了。
请帮忙!