2010-11-22 2 views
0

私のアプリにUIAlertを追加しようとしましたが、クラッシュを引き起こしました。代理人、アプリの他の部分と競合していますか?

だから私は私のコードをコメントアウトしてのみ

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
} 

この方法を去り、インターフェース

<UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate, UIAlertViewDelegate > 

しかし、アプリポップですでにだったアラート、でもその別でいえを追加しましたクラスのアプリケーションです。アラートのokを押すとすぐにクラッシュします。

私は一度も出会ったことのない警告と奇妙な矛盾がありますか?

何が起こっているのかを誰でも示唆することができます。デバッグコンソールに出力せずにアプリケーションがクラッシュします。だから、おそらく何が問題なのかのヒントはありません。

おかげ -code

+1

コンソールの出力を最初に確認してください。 – Jirapong

+0

こんにちはJirapong。私が言ったように:アプリはデバッグコンソールに出力せずにクラッシュします。コンソールが私にヒントを与えていたら、何が起こっているのかについてあなたの人の直感を尋ねることはできません。 –

+0

ヒントなしでクラッシュすると、通常は公開されている問題またはポインタをintとしてログに記録される – griotspeak

答えて

3

ありませんが、アラートとは奇妙な競合はありません。 tagプロパティの場合は、1つのクラスから複数のアラートを作成し、デリゲートでそのアラートをチェックすることもできます。

通常、クラッシュは、あなたがデリゲートをあまりにも早くリリースしたことを示します。デリゲートを追加すると、デリゲートを保持しないため(リリースサイクルを避けるため)、ボタンを押したときに手動で周りを確認する必要があります。

これを確認するには、すべてのデリゲートメソッドにブレークポイントを設定します。

0

上記のコメントに対する回答に基づいてください。デリゲートオブジェクトが早くリリースされるようです。私はあなたがUIAlertを宣言するかどうかはわかりませんが、通常はこれが好きです。

  1. 使用UIAlertViewDelegateあなたは
  2. コールUIAlertをしたとしてclickedButtonAtIndexを実装し、この

/*コード*/

-(void) showSomething 
{ 
    UIAlertView *av = [[[UIAlertView alloc] initWithTitle:@"title here" 
         message:@"message here." 
         delegate:self 
         cancelButtonTitle:@"Cancel" 
         otherButtonTitles:@"Settings", nil] autorelease]; 

    [av show]; 
} 

のような一つの方法でそれを解放

  • をしたとして、この助けを願っています。

  • 関連する問題