AFNetworking从不在OSX命令行应用程序上调用任何完成块

时间:2014-10-10 00:18:20

标签: objective-c xcode macos afnetworking

这是我的基础测试应用程序的完整代码:(缩小到可能的最小值)

#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)和主分支上的代码都出错了。

请帮忙!

1 个答案:

答案 0 :(得分:2)

如果没有runloopmain将执行一次并立即退出。

请参阅this Stack Overflow question for more information