2012-12-02 16 views
6

こんにちはフォーラムで検索しましたが、ヘルプが見つかりませんでした。ここで、iはメインrootviewcontrollerでmfmailcomposeviewcontrollerをシナリオ作成していますが、私はpresentviewcontrollerを呼び出すことによって、それを表示していますが、それは却下されたとき、私はこのエラーを取得:エラー:オブジェクトファイル内のセクションを指すセクションがアドレスに含まれていません

私が使用しているコードは以下の通りである
error: address doesn't contain a section that points to a section in a object file 

error: address doesn't contain a section that points to a section in a object file 
-(void) mailButtonTapped 
{ 

if ([MFMailComposeViewController canSendMail]) { 

    mailViewController_ = [[MFMailComposeViewController alloc] init]; 
    mailViewController_.mailComposeDelegate = self; 
    [mailViewController_ setSubject:@"Try ..."]; 
    [mailViewController_ setMessageBody:@"Hey I just tried ..." isHTML:NO]; 
    NSData *videoData = [NSData dataWithContentsOfURL:movieURL_]; 
    [mailViewController_ addAttachmentData:videoData mimeType:@"video/quicktime" fileName:@"Video.mov"]; 
    [self presentViewController:mailViewController_ animated:YES completion:nil]; 

} 

else { 

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Sharing Not Possible" message:@"Configure your mail to send the mail" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    [alertView show]; 
    [alertView release]; 

    } 
} 

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ 

NSString *title = @"Email"; 
NSString *msg = nil; 

if (result == MFMailComposeResultFailed) 
    msg = @"Unable to send, check your email settings"; 
else if (result == MFMailComposeResultSent) 
    msg = @"Email Sent Successfully!"; 
else if (result == MFMailComposeResultCancelled || result == MFMailComposeResultSaved) 
    msg = @"Sending Cancelled"; 

UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
[alertView show]; 
[alertView release]; 

[self dismissViewControllerAnimated:YES completion:nil]; 

}

却下後、私はエラーを受け取ります

助けてください

+0

ARCを使用していますか? – Max

+0

いいえ、私は使用していません – kashif789us

+0

私はdismissingviewcontrollerの後にmailViewControllerを解放しようとしましたが、運はありません – kashif789us

答えて

-1

解散のアニメーションが完了したらブロックが呼び出されることを期待しています。

「完了:なし」を削除するだけで正常に動作します。

よろしくお願いいたします。

+0

完了:nilは完全に正常です...どのシナリオでも問題は発生しません。 – Nishant

15

このエラーもありましたが、別のシナリオがありました。 @propertyで定義されたブロックプロパティーを持っていました(非アトミック)。

この問題を解決するために、ブロックプロパティを@property(コピー、非アトミック)で宣言しました。あなたはこのようにそれを使用することができます

乾杯

+0

問題ありがとうございます、それは明らかですが、それだけで見つけるのは不可能です。-_- ' –

+0

私は同じ問題を抱えていました。 –

0

MFMailComposeViewController *mailViewController_ = [[MFMailComposeViewController alloc] init]; 
    mailViewController_.mailComposeDelegate = self; 
    [mailViewController_ setSubject:@"Try ..."]; 
    [mailViewController_ setMessageBody:@"Hey I just tried ..." isHTML:NO]; 
    NSData *videoData = [NSData dataWithContentsOfURL:movieURL_]; 
    [mailViewController_ addAttachmentData:videoData mimeType:@"video/quicktime" fileName:@"Video.mov"]; 
    [self presentViewController:mailViewController_ animated:YES completion:nil]; 
[mailViewController_ release]; 
0

は私も(私はUIViewから継承したクラスにframeというプロパティを書いて、この問題を抱えていたが、非常に愚かなエラーによって引き起こされますそれはUITableViewCellでしたが、これはUIViewから継承するすべてのクラスで発生すると思います)これは元のframeプロパティを上書きし、このエラーが発生しました。

プロパティ名を変更するだけで修正されました。

1

このエラーは、存在しないオブジェクト/ポインタにアクセスしているときに発生します。また、他の不正なアクセス、0x00000のアクセスされた値などのエラーを引き起こす可能性があります。

したがって、ポインタを削除/解放してから、後でアクセスします。

コードを見ることから、これはデバッグなしでの推測に過ぎず、2番目のAlertViewのデリゲートをselfに設定してからすぐにviewcontrollerを終了します。

アラートビューが閉じられた後、またはボタンが押された後、またはAlertViewデリゲートをnilに設定した後で、解消を試みてください。

これは正確にエラーではないが、主な理由は、オブジェクトを解放してから、関数を呼び出したりアクセスしようとしていることが主な原因です。

関連する問題