2011-07-25 97 views
0

在我的應用程序中,我有電子郵件發送代碼。使用MFMailComposer發送電子郵件後發生原因不明的崩潰

這是相當簡單的香草(粘貼問題結束)。

會發生什麼事是按以下順序: - 點擊我的應用程序的「電子郵件」按鈕,調用sendEmail方法 - 點擊收件人字段 - 鍵入電子郵件地址 - 點擊MFMailComposer發送按鈕 - 的發送電子郵件(和到達 - 通常我把我自己的電子郵件地址) - 應用程序崩潰......這個堆棧抓取:

2011-07-25 11:21:21.179 MyApp[2769:3d0b] -[__NSCFString searchQuery:returnedResults:]: unrecognized selector sent to instance 0x3c3410 
2011-07-25 11:21:21.201 MyApp[2769:3d0b] uncaughtExceptionHandler 
2011-07-25 11:21:21.202 MyApp[2769:3d0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString searchQuery:returnedResults:]: unrecognized selector sent to instance 0x3c3410' 

我注意到的是以下幾點:1。 當我鍵入了爲了解決這個問題,調試器的輸出顯示爲個CPSqliteStatementSendResults:中斷 2.如果我添加setToRecipients(有效的「硬編碼」的電子郵件地址),應用程序不會崩潰...

任何想法? (下面的代碼)

- (void)sendEmail:(id)sender { 
    MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; 
    controller.mailComposeDelegate = self; 

    [controller setSubject:@"The Subject"]; 

    [self presentModalViewController:controller animated:YES]; 
    [controller release]; 
} 

- (void)mailComposeController:(MFMailComposeViewController*)controller 
      didFinishWithResult:(MFMailComposeResult)result 
         error:(NSError*)error; 
{ 
    switch (result) 
    { 
     case MFMailComposeResultCancelled: 
      break; 
     case MFMailComposeResultSaved: 
      break; 
     case MFMailComposeResultSent: 
      break; 
     case MFMailComposeResultFailed: 
      NSLog(@"Sending Failed"); 
      break; 
     default: 
      NSLog(@"Message not sent"); 
      break; 
    } 
    [self dismissModalViewControllerAnimated:YES]; 
} 
+0

你有任何其他函數的名稱'searchQuery'? –

+0

否 - 否在我的代碼中,我有一個名爲'searchQuery'的方法 – Reuven

回答

0

儘量不要立即但在他的委託方法didFinishWithResult釋放MFMailComposeViewController(在最後)。

+0

我看到的所有示例代碼(包括http://developer.apple.com/library/ios/#samplecode/MailComposer/Listings/Classes_MailComposerViewController_m.html% 23 // apple_ref/doc/uid/DTS40008865-Classes_MailComposerViewController_m-DontLinkElementID_6)立即顯示發佈。你懷疑這個的任何具體原因? – Reuven

+0

不,你是完全正確的。自從ARC以來,我只是忘記了事情是如何運作的。 ;) 以下是我在文檔中找到的內容: '重要:...因此,您必須在呈現界面之前設置內容字段的值。' 在我看來,您必須提供一個起始收件人,但如我錯了請糾正我。我現在只用了一次郵件編輯器。 – yinkou

+0

我相信這並不意味着該字段必須設置 - 它只是意味着(恕我直言),如果你想設置這些領域,你必須設置_before_呈現控制器。你不這樣讀嗎? – Reuven

相關問題