0
  1. バックグラウンドで実行されるクラス メソッドMFmessageComposeviewcontrollerから任意のビュー コントローラー (topviewcontroller) で開く方法。NSObject

    これは、エラーなしでメッセージコントローラーをポップアップする私のコードです

    MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
    
    if([MFMessageComposeViewController canSendText])
    {
        controller.body = @"Check out FundooSpace for mobile. Download it now from www.lsaknlansc.cas.kasjla/FundooSpace/d";
        controller.recipients=(NSArray *)passa;
        passa=nil;
        AppDelegate *appDelegateObject1 = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    controller.messageComposeDelegate=self;
        [appDelegateObject1.navigationCntr.topViewController performSelectorOnMainThread:@selector(presentModalViewController:animated:) withObject:controller waitUntilDone:NO];
    }
    

しかし、送信またはキャンセルボタンをクリックした後、クラッシュします。
2.delegateメソッドが呼び出されない(メッセージコントローラーにデリゲートを設定する方法)

4

1 に答える 1

1

バックグラウンドで動いていた NSObject が解放されると思います。Compose View Controller のデリゲートでもあるため、致命的なエラー: EXC BAD ACCESS. プロパティ messageComposeDelegate はオブジェクトを保持しません。ARC を使用していますね。

Compose View Controller が終了するまで、オブジェクトを任意の強力な var に割り当てて保持するようにしてください。

于 2013-04-22T16:25:00.023 に答える