MailCore IMAP服务器导致应用程序崩溃?

时间:2013-03-21 21:46:33

标签: iphone sdk mailcore

我正在使用MailCore构建我的电子邮件客户端,并在尝试使用IMAP从电子邮件帐户接收邮件时遇到一些问题。

以下是我在viewDidLoad中的代码:

CTCoreAccount *account = [[CTCoreAccount alloc] init];
        BOOL success = [account connectToServer:@"imap.mail.me.com"
                                           port:993
                                 connectionType:CTConnectionTypePlain
                                       authType:CTImapAuthTypePlain
                                          login:[keychain objectForKey:(__bridge id)kSecAttrAccount]
                                       password:[keychain objectForKey:(__bridge id)kSecValueData]];
        if (!success) {

            UIAlertView *alertView1 = [[UIAlertView alloc] initWithTitle:@"Error Checking Email" message:@"There was a problem checking your inbox, please try again later." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alertView1 show];

        }


        CTCoreFolder *inbox = [account folderWithPath:@"INBOX"];
        messages = [inbox messagesFromSequenceNumber:1 to:0 withFetchAttributes:CTFetchAttrEnvelope];
        [tableView reloadData];

问题是当我运行我的应用程序时,它没有启动,我的手机显示空白的黑屏。我尝试评论代码,一切正常。

谢谢!

1 个答案:

答案 0 :(得分:1)

阻止连接和下载消息的主(UI)线程,这可能比启动应用程序所需的时间更长(我认为大约20秒)。

看起来MailCore没有异步API,所以你必须自己在后台使用它。我建议使用调度队列(如果你只使用对UIKit类的弱引用,或dispatch_async()使事情在后台运行,则NSOperationQueue可以合理地直接使用)。

通常的并发警告适用。