2010-12-28 9 views
0

これは私のコードです。関数の最後に来ると、デバッガーはEXC_BAD_ACCESSエラーをスローし、Webサイトのログをチェックすると、URLは一度も訪れませんでした。誰も私がこの問題を修正するのに役立つことができれば、それは非常に高く評価されるだろう:PHPスクリプトをトリガーしようとしました.EXC_BAD_ACCESSを取得しました

-(IBAction)submitEmail:(id)sender 
{ 
    NSString *urlStringRaw = [[NSString alloc] init]; 
    urlStringRaw = [NSString stringWithFormat:@"http://vedev.org/AnonMail/sendEmail.php?from=%@&to=%@&subject=%@&body=%@", from.text, to.text, subject.text, bodyContent.text]; 
    NSString *urlString = [urlStringRaw stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    [urlStringRaw release]; 
    NSURL * url = [NSURL URLWithString:urlString]; 
    [urlString release]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
    [url release]; 
    NSURLConnection *connection = [NSURLConnection connectionWithRequest:requestObj delegate:nil]; 
    [connection release]; 
    [requestObj release]; 
} 

答えて

2

EXC_BAD_ACCESS信号は、アプリケーションがどこかにメモリ管理エラーを有することを意味します。それはサーバー側とは関係ありません。これはあまりにも驚くべきことではありません。上記のコードでは、多数のメモリ管理エラーがあります。

あなたのプロジェクトでスタティックアナライザーを実行する必要があります.Xcodeで "ビルドと解析"を行い、フラグを立てたエラーを修正してください。また、標準のCocoaメモリ管理ルールを学んでください。投稿したコード(およびアプリケーションの他のコード)で間違っていることを正確に示します。

また、ポインタ変数が実際にどのようなものであるかを理解することが重要です。オブジェクトへの参照であり、オブジェクト自体ではありません。たとえば、あなたは次のように書いています:

NSString *urlStringRaw = [[NSString alloc] init]; 
urlStringRaw = [NSString stringWithFormat:@"..."]; 

なぜあなたは最初の行をあなたのやり方で書く必要があると思いましたか?

+0

私は答えを投稿しようとしていましたが、あなたは良いですので、OPの利益のためにコメントします。 @Brennan、あなたはメモリ管理に関する文書を読む必要があります。自動解放されたオブジェクト( '-stringWithFormat:'、 '-stringByAddingPercentEscapesUsingEncoding:')を返すメソッドからの戻り値を受け取っており、それらに対して 'release'を呼び出しているので、プログラムがクラッシュしています。 Chrisが言っているように、Static Analyzerはこれを選択する必要があります。 – d11wtq

関連する問題