正文
在开发的过程中遇到一个警告问题,截图如下:
经查阅资料得知,这是Xcode9的一个新特性,即= 主线程检测器(Main Thread Checker) =,出现这个警告意味着你把主线程的代码放到子线程里面了。
修改如下:
原警告代码
#pragma mark - RCIMGroupInfoDataSource #pragma mark - 群组 - (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(RCGroup *))completion{ if(groupId != nil && groupId.length > 0){ WEAKBLOCK; //拿到ID先从本地数据库查找,没有的话再从网络上请求。 //保险起见,先确定一下数据库中有没有这张表 [ZFJSqliteKit createTableWithtableName:KUserInforTable fieldNameModel:[RongYunChatUserInfor new]]; //数据库中有个人信息表,查找缓存的个人信息 NSDictionary *parameter = @{@"mid":groupId}; [ZFJSqliteKit selectAllDataBaseWithtableName:KUserInforTable byParameter:parameter selectType:KAndType completed:^(NSArray *resultArr, NSString *meg) { //已有缓存,直接加载 NSDictionary *dict = [resultArr firstObject]; NSString *groupId = [dict objectForKey:@"mid"]; NSString *groupName = [dict objectForKey:@"name"]; NSString *groupImg = [dict objectForKey:@"portraitUri"]; RCGroup *group = [[RCGroup alloc]initWithGroupId:groupId groupName:groupName portraitUri:groupImg]; [weakSelf.groupInfosArr addObject:group]; [weakSelf.conversationListTableView reloadData]; if(completion){ completion(group); } }]; } }
修改后的代码
#pragma mark - RCIMGroupInfoDataSource #pragma mark - 群组 - (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(RCGroup *))completion{ if(groupId != nil && groupId.length > 0){ WEAKBLOCK; //拿到ID先从本地数据库查找,没有的话再从网络上请求。 //保险起见,先确定一下数据库中有没有这张表 [ZFJSqliteKit createTableWithtableName:KUserInforTable fieldNameModel:[RongYunChatUserInfor new]]; //数据库中有个人信息表,查找缓存的个人信息 NSDictionary *parameter = @{@"mid":groupId}; [ZFJSqliteKit selectAllDataBaseWithtableName:KUserInforTable byParameter:parameter selectType:KAndType completed:^(NSArray *resultArr, NSString *meg) { //已有缓存,直接加载 NSDictionary *dict = [resultArr firstObject]; NSString *groupId = [dict objectForKey:@"mid"]; NSString *groupName = [dict objectForKey:@"name"]; NSString *groupImg = [dict objectForKey:@"portraitUri"]; RCGroup *group = [[RCGroup alloc]initWithGroupId:groupId groupName:groupName portraitUri:groupImg]; [weakSelf.groupInfosArr addObject:group]; dispatch_async(dispatch_get_main_queue(), ^{ [weakSelf.conversationListTableView reloadData]; }); if(completion){ completion(group); } }]; } }
主要把我的[weakSelf.conversationListTableView reloadData];放到主线程里面。
结束语
欢迎各位大神补充!
欢迎大家加移动开发技术交流群,在这里大家可以一起讨论学习,这里有大佬,也有小菜鸟,没事还能斗斗图装装逼,如果需要换工作的还能相互推荐,期待大家的加入!