5
if([MFMessageComposeViewController canSendText])
{
    MFMessageComposeViewController *sms_message_vc = [[MFMessageComposeViewController alloc] init];
    sms_message_vc.body = text;
    sms_message_vc.recipients = recipients;
    sms_message_vc.messageComposeDelegate = self; 
    [self presentModalViewController:sms_message_vc animated:FALSE];
    [[UIApplication sharedApplication] setStatusBarHidden:TRUE];
    [sms_message_vc release];
}

これが実行されると、作成ビューが実際に表示されるまでに数秒の遅延があります。これを引き起こしているのは何ですか?また、遅延をなくすにはどうすればよいですか?

編集1:明確化:プロセスがUIをどこにあるかに関係なく数秒間ハングさせるsms_message_vcため、作成とivarは役に立ちません。...alloc] init]

編集2:初期化を同時に実行しようとするために(異なる優先順位で)GCDを試しました。助けにはならなかった:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, (unsigned long)NULL), ^(void){
    sms_message_vc = [[MFMessageComposeViewController alloc] init];
    sms_message_vc.messageComposeDelegate = self; 
});
4

2 に答える 2

0

MFMessageComposeViewController *sms_message_vc をクラス インスタンス変数にして、以下を呼び出すことを検討してください。

MFMessageComposeViewController *sms_message_vc = [[MFMessageComposeViewController alloc] init];

self初期化の直後にデリゲートを設定するとともに、以前にsms_message_vc

次に、次のようにします。

sms_message_vc.body = text;
sms_message_vc.recipients = recipients;
[self presentModalViewController:sms_message_vc animated:FALSE];
[[UIApplication sharedApplication] setStatusBarHidden:TRUE];
[sms_message_vc release];

実際にメッセージを送信したいとき。これはあまり変わらないはずですが、一部は役立つかもしれません。

于 2012-07-18T16:42:27.887 に答える