AFNetworking是否在主线程上调用完成块?或者是在后台调用,要求我手动将我的UI更新发送到主线程?
使用代码而不是单词,这是AFNetworking文档中的示例代码,其中调用NSLog由UI更新替换:
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
self.label.text = JSON[@"text"];
} failure:nil];
Run Code Online (Sandbox Code Playgroud)
应该这样写吗?
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
dispatch_async(dispatch_get_main_queue(), ^{
self.label.text = JSON[@"text"];
});
} failure:nil];
Run Code Online (Sandbox Code Playgroud) 我在Objective-C中写了一个正则表达式.
转义序列\w是非法的并发出警告,因此正则表达式/\w/必须写为@"\\w"; 转义序列显然\?是有效的,并且不会发出警告,因此/\?/必须将正则表达式写为@"\\?"(即必须转义反斜杠).
问号是不是像无形的\t或\n,那么为什么是\?一个有效的转义序列?
编辑:为了澄清,我不是在询问量词,我问的是字符串转义序列.也就是说,这不会发出警告:
NSString *valid = @"\?";
Run Code Online (Sandbox Code Playgroud)
相比之下,这会发出警告("未知转义序列'\ w'"):
NSString *invalid = @"\w";
Run Code Online (Sandbox Code Playgroud)