用户界面在脱机模式下挂起

时间:2016-06-24 05:44:54

标签: ios xmppframework

enter image description here是否有任何机构知道我需要检查应用程序是否会在一段时间后冻结?我的意思是,我可以在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的委托被调用。

0 个答案:

没有答案