6

こんにちは、フォーラムで検索しましたが、ヘルプが見つからなかったので、新しく投稿します。これがシナリオです。メインのルートビューコントローラーでmfmailcomposeviewcontrollerを作成しています。presentviewcontrollerを呼び出して表示していますが、閉じられると次のエラーが発生します。

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];

}

却下した後、エラーが表示されます:

error: address doesn't contain a section that points to a section in a object file

私を助けてください

4

5 に答える 5

15

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

この問題を修正するために、ブロック プロパティを @property (コピー、非アトミック) で宣言しました。

乾杯

于 2013-02-18T17:35:34.467 に答える
1

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

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

コードを見ると、これはデバッグなしの推測にすぎません。2 番目の AlertView のデリゲートを自分自身に設定しますが、すぐにビュー コントローラーを閉じます。

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

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

于 2013-09-21T01:33:15.707 に答える
0

私もこの問題を抱えていましたが、非常にばかげたエラーが原因で、frameから継承するクラスで呼び出されるプロパティを作成しましたUIView(これは、からUITableViewCell継承するすべてのクラスで発生すると思いますUIView)これは元のプロパティを上書きし、frameこのエラーを引き起こしました.

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

于 2013-05-27T14:52:05.320 に答える
-1

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

「completion:nil」を削除するだけで動作するはずです!

よろしく。

于 2013-02-05T15:48:31.630 に答える