【问题标题】:MFMessageComposeViewController much slower on iOS 7MFMessageComposeViewController 在 iOS 7 上要慢得多
【发布时间】:2013-09-26 11:37:24
【问题描述】:

我有一个用于发送电子邮件和短信的应用程序。

我遇到的问题是,iOS 7 上 MFMessageComposeViewController 的加载速度比之前的 iOS 慢得多,并且随着联系人数量的增加,它变得最糟糕。

在打开消息应用程序并加载内容之前,屏幕会黑几秒钟。

有什么想法吗?

在邮件数量相同的情况下,MFMailComposeViewController 和以前一样快。

救命!! 谢谢。

【问题讨论】:

  • 您是否在新的空项目中复制了该问题?
  • 没有。我正在使用实时项目的副本。
  • 我的意思是你确定这不是由你的项目中的某些东西引起的。您是否在导航栏中使用任何自定义字体?在一个简单的项目中证明这个问题。如果在简单项目中仍然发生错误,请向 Apple 提出错误。
  • 我已经在 Apple 上放弃了这个问题。我所拥有的证明是,这与 iOS 6 上使用的代码完全相同,而且速度很快。

标签: ios performance ios7 messages mfmessagecomposeview


【解决方案1】:

我也有同样的问题。我为作曲家提供了强有力的参考

@property (nonatomic, strong, retain) MFMessageComposeViewController *messageComposer;

然后所有者类调用这个方法:

-(void)sendSMSFromController:(UIViewController*)controller
{
    self.messageComposer = [MFMessageComposeViewController new];

    if([MFMessageComposeViewController canSendText]) {
        [_messageComposer setBody:_body];
        [_messageComposer setRecipients:[NSArray arrayWithObjects:_recipient, nil]];
        [_messageComposer setMessageComposeDelegate:self];
        [controller presentViewController:_messageComposer animated:NO completion:NULL];
    }
}

作曲家出现很快,但消失得很慢。结束:

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    switch (result) {
        case MessageComposeResultCancelled:
            NSLog(@"Message sending cancelled.");
            break;

        case MessageComposeResultFailed:
            NSLog(@"Message sending failed.");
            break;

        case MessageComposeResultSent:
            NSLog(@"Message sent.");
        default:
            break;
    }


    [controller dismissViewControllerAnimated:YES completion:^(){
        self.messageComposer = nil;
    }];
}

重新启动我的设备后,它显然可以工作。在重新启动之前(通过发送无效收件人与 MessageService 混淆之后)它失败了。

【讨论】:

  • 谢谢,这对我有用……我仍然觉得很奇怪,我不得不重新启动我的 iPhone……
  • 似乎 MessageService 包含一些单例,没有线程安全初始化。
【解决方案2】:

iOS7.0.3 已修复此问题

【讨论】:

    【解决方案3】:

    对于 iMessage 收件人,我也遇到了这个问题。

    似乎与从 iCloud 下载的 iMessage 同步历史记录相关联。我有 4 个收件人,第一个 Apple iMessage 对话框弹出大约需要 30 秒。

    在等待了一次之后,我取消了发送,下一次重复尝试很快解决了——这个结果,加上 iOS7 在作曲家视图中显示消息历史记录(iOS7 之前没有),导致我得出结论,Apple 在弹出视图之前正在等待某种 iCloud 同步。

    这在具有不同 iCloud 帐户的 iPhone 4 和新 iPhone 5s 上重现,因此它似乎不受硬件限制,也不是我的 iCloud 帐户或收件人独有的。


    对于这个问题我没有确定的解决方案,但我有一些解决方法可以建议进一步调查:

    • 我们的一些用户报告说重新启动设备可以解决此问题。
    • 升级到 iOS7 后,这可能是每个唯一 iMessage 收件人“1 次费用”。

    【讨论】:

    • iMessage 撰写也有同样的问题。但是我有一个完全不同的问题是有时消息甚至不会全部发送。不过重启设备后问题就解决了。我一直在为这个问题绞尽脑汁,而且似乎断断续续。
    • 这里完全相同,从我的测试来看,它似乎与在设备上具有历史记录的收件人相关联,即您之前发送过消息。如果您选择一个没有现有 iMessage/SMS 线程的收件人,控制器会在呈现后立即响应,并且在按下发送后消息发送成功。如上所述,重新启动设备(在我的情况下是 iPhone 5)可以解决问题(暂时)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 2013-11-08
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多