你好我在iOS测试中完成了这个QCM。我的选择是B.而且这是错的。我希望有人能帮助我理解。先感谢您。
以下是问题: NSURLConnection实例在并发NSOperation的“start”方法的实现中创建并启动。
在此NSOperation实例中应该更改哪些NSURLConnection的委托协议方法调用?
-(void)start{
...
_connection = [[NSURLConnection alloc] initWithRequest: request delegate:self startImmediately:NO];
[_connection scheduleInRunloop: [NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes];
[_connection start];
... }
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"Called"); }
提供三个答案: 答:将startImmediately设置为YES
B:将此代码包装到dispatch_async(dispatch_get_current_queue(),^ {});
C:没有,didReceiveResponse将被调用。
答案 0 :(得分:0)
此代码示例(选项C)无需更改。
将startImmediately
设置为YES
(选项A)只会在相应的运行循环上安排连接之前启动连接,这会导致问题。
理论上,您可以将连接的创建分配给主线程(选项B),从而无需在主运行循环上手动调度它。但是你的代码示例(在主运行循环上手动调度它)完成了同样的事情,并且是更常见的模式。
最重要的是,您现有的代码示例很好。