Objective c 关于nsrunlop,需要澄清

Objective c 关于nsrunlop,需要澄清,objective-c,delegates,nsrunloop,Objective C,Delegates,Nsrunloop,当我 。。。什么也没发生。委托方法在i之前不会被调用 Logger *logger = [Logger new]; NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; __unused NSURLConnection *conn = [[NSURLConnection all

当我

。。。什么也没发生。委托方法在i之前不会被调用

    Logger *logger = [Logger new];

    NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    __unused NSURLConnection *conn = [[NSURLConnection alloc] 
            initWithRequest:request delegate:logger startImmediately:YES];

我本以为
马上就开始了:是的
会做到这一点

异步回调需要nsrunlop。见:

默认情况下,命令行应用程序没有nsrunlop—gui应用程序有

从文档中:

initWithRequest:委托: 返回初始化的URL连接并开始加载URL请求的数据

[[NSRunLoop currentRunLoop]run];
-(id)initWithRequest:(NSURLRequest*)请求委托:(id)委托
。。。为了使连接正常工作,调用线程的 循环必须在默认运行循环模式下运行。看见 ScheduleRunLop:forMode:更改运行循环和模式


这段代码是在单独的线程中运行还是在主线程中运行?您是在命令行应用程序还是gui应用程序中?命令行应用程序。我正在遵循本书中的示例Bryan-您的意思是说GUI应用程序会自动获取
nsrunlop
,而命令行应用程序需要显式声明它吗?谢谢,先生。确实非常有用。GUI应用程序有一个具有运行循环的非应用程序。这是另一篇文章:非GUI程序中的线程有一个运行循环,它只是没有运行。
n应用程序启动过程的一部分是运行循环。
- (id)initWithRequest:(NSURLRequest *)request delegate:(id < NSURLConnectionDelegate >)delegate