是否有任何机构知道我需要检查应用程序是否会在一段时间后冻结?我的意思是,我可以在iPhone屏幕上看到该应用,但没有视图响应。
我做了一些谷歌,我发现,我已经以某种方式阻止了主线程。
但我的问题是如何识别哪个方法导致主线程阻塞?有没有办法识别?
我使用XMPP进行聊天和核心数据存储和检索消息。我将应用程序与app delegate类中的XMPP Server连接。但我不知道XMPP如何一次又一次地调用。根据我的核心数据做得很好但在离线模式XMPP尝试断开连接,直到它没有完成其任务它冻结应用程序一段时间,然后在离线模式下正常工作。 但我不确定是什么罪魁祸首。我无法找到问题。
我冻结时也尝试了暂停按钮,但在左侧窗口中,我无法找到使应用程序冻结的方法。
这是我正在使用的代码
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString * cellIdentifier = @“IMChatMessageCell”;
CMMessageArchiving_Message_CoreDataObject * msgInfo =(CMMessageArchiving_Message_CoreDataObject *)[[self messageFetchResultController] objectAtIndexPath:indexPath];
IMPromos * promo = nil; if(msgInfo.promo_Object) { promo = msgInfo.promo_Object; //// NSLog(@“%@”,促销);
} 其他 { promo = [IMDataHandler fetchPromoForPromoID:msgInfo.promo_id]; msgInfo.promo_Object = promo; }
if(msgInfo.mediaThumbnailPath) return [self mediaMessageCell:tableView indexPath:indexPath messageInfo:msgInfo];
IMChatMessageCell chatMessageCell =(IMChatMessageCell )[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if(chatMessageCell == nil) { NSArray * objects = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:nil options:nil]; for(对象中的NSObject * obj) { if([obj isKindOfClass:[IMChatMessageCell class]]) { chatMessageCell =(IMChatMessageCell *)obj; 打破; } }
} int imageWith;
NSString * message = [msgInfo body];
if(NO == msgInfo.isOutgoing)//左对齐 {
// Just set the textfield here ///
NSString* promoImage = [[IMUtils getImageFolderPath] stringByAppendingPathComponent: [chatMessageCell.cellPromo.promo_image lastPathComponent]];
//NSLog(@"%@",promoImage);
UIImage *image = [UIImage imageWithContentsOfFile:promoImage];
if (image)
{
chatMessageCell.userImageView.image = image;
if(!promo.promo_message.length)
{
chatMessageCell.userImageView.frame = CGRectIntegral(CGRectMake(padding, 15, image.size.width,image.size.height));
bubbleItemOrigin=USER_IMAGE_Y_POS_WITHOUT_HEADER;
if(!promo.promo_link.length)
bubbleItemOrigin-=5;
}
else
{
chatMessageCell.userImageView.frame = CGRectIntegral(CGRectMake(padding, USER_IMAGE_Y_POS, image.size.width, image.size.height));
bubbleItemOrigin=USER_IMAGE_Y_POS;
}
}
返回chatMessageCell; }
(无效)viewWillAppear中:(BOOL)动画 {
[self scrollToBottom]; [super viewWillAppear:animated];
[self refreshTitleView]; messagesFetchResultController.delegate = self; messageTextField.font = [IMUtils appFontWithSize:font_size]; }
我正在使用此代码。
当我在没有网络的情况下运行应用程序时,它会冻结
这样打印到日志中 和XMPP的委托被调用。