在我的应用中,用户有一个时间轴,其中显示来自朋友的帖子,但随机,查询已停止,不再执行,
更确切地说,我之前遇到了一个问题:我的应用程序冻结在psynch_mutexwait
,我通过使用:dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ });
修复了在后台线程上运行的查询,但更确切地说:
我有2个查询分别每3秒和4秒循环运行,由2个shcheduled NSTimer
新帖子的第一个查询循环(在这种情况下,用户无需手动刷新):
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
PFQuery *query = [PFQuery queryWithClassName:@"Posts"];
[query whereKey:@"user" notEqualTo:[PFUser currentUser]];
[query whereKey:@"user" containedIn:self.allFriends];
[qFriendInfo findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
//Used to display results in UICollectionView
self.AllPosts = [[NSArray alloc] initWithArray:objects];
}
});
第二个查询是查询用户的状态,例如,如果用户是"在线","离线",或者"断开连接"
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
PFQuery *query = [PFUser query];
[query whereKey:@"objectId" notEqualTo:[PFUser currentUser].objectId];
[query whereKey:@"objectId" containedIn:self.allFriendsIds];
[qFriendInfo findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
//Used to display results in UICollectionView
self.allUsers = [[NSArray alloc] initWithArray:objects];
}
});
使用dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ });
但是随机,查询被停止(应用程序也没有被冻结......)(我可以通过控制台中的NSLog
看到这一点)当我暂停时,在左侧窗口我可以请参阅semaphore_wait_trap
有没有人知道如何解决这个问题?