2012-01-05 4 views
2

まず、リクエストがViewControllerにある前に、アプリケーションは正常に動作しました。私は今MVCモデルに準拠するために自分のクラスファイルに移動しましたが、要求を開始するとクラッシュしています。私はデバッグして、私がデリゲートを自己として設定した行に絞り込んだ。私はクラス '.hファイルを編集して' ASIHTTPRequestDelegate 'に準拠させましたが、まだ運がありません。ASIHTTPREQUEST xCode - デリゲートの設定時にクラッシュする

if (delegate && [delegate respondsToSelector:didStartSelector]) { 

次のコードは、私が要求を開始するために使用しているものです、と私は、実行が一時停止したときにメソッドが呼び出されたときしかし、それは、コードの彼のラインに私を指すん、コンパイラエラーを得ることはありませんこれはViewControllerから呼び出されています。何か案は?

-(void) authenticateLoginWithURLString:(NSString *)address Username:(NSString*)username Password:(NSString*)password{ 
    //LoginViewController *loginVC = [LoginViewController new]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:address]]; 
    [request setPostValue:username forKey:@"u"]; 
    [request setPostValue:password forKey:@"pw"]; 
    [request setDelegate:self]; 
    [request startAsynchronous]; 
} 

enter image description here

+0

例外はありますか? –

+0

私は全く見ることができません、それは単に一時停止します。私が間違った場所(コンソール)を見ていない限り。 –

+0

私はスクリーンショットを追加しましたが、サイズについてはごめんなさい。 –

答えて

3

それは私が考えたものです。緑色の水平バーの右側に、EXC_BAD_ACCESSと表示されています。基本的には、デリゲートとしてselfを渡しています。セレクタを持つことが確認される前に、そのオブジェクト(自己)がDeallocatedになっています。言い換えれば、そのクラスのインスタンスを作成しているところであれば、それを強く参照する必要がありますので、割り当て解除されません。

十分明確でない場合は教えてください。

+0

詳細な回答ありがとうございます!私はここでそれを呼んでいます、弱いのではなく強くするにはどうすればいいですか? 'databaseConnection * dbConnection = [databaseConnection new];' –

+0

あなたは[databaseConnection alloc] initを使用する必要があります。また、大文字でクラスに名前を付ける必要があります(DatabaseConnectionなど)。最後に、このファイルの.hファイルにプロパティを作成する必要があります。@property(非原子的、強力)DatabaseConnection * dbConnection;あなたの.mファイルで合成した後にそれを割り当てます。 –

+0

ああ、ありがとう。私は命名規則を知っている、私はそれを作成したときにちょうど半分眠っていた。私はすぐにそれを変更しようとします。私はそれを行って、あなたに知らせるでしょう。再度、感謝します! –

関連する問題