私はObjective Cの初心者です。.NETとJavaの年が私のメモリ管理スキルに錆びているので、ここで何か不足している可能性が非常に高いです。ランダムBAD_ACCESSと「セレクタが認識されていません」
iPadアプリを構築しています。メインビューはSplitViewで、左側にTableViewがあり、詳細ビューには別のTableViewが含まれています。後者にデータをロードすることは、私の問題を解決するためにコメントアウトされています。
アプリはうまくいくようです(.NET WSからデータを取得してテーブルに解析する必要があります)が、ランダムにBAD_ACCESSまたは「セレクタが認識されません」というエラーが発生します。
セレクタは、私がここに来るエラー認識されない:
-(void) connection:(NSURLConnection *) connection
didReceiveResponse:(NSURLResponse *) response {
[webData setLength: 0];
}
私はあなたのほとんどが知っていると確信しているコードのこの作品を、私は、ウェブを送信するために、私はオンラインで見つけるすべてのサンプルからや書籍でそれを得ました要求。それははsetLengthセレクタを認識しないと言う理由
が私を打つ、WEBDATAは
NSMutableData *webData;
任意のアイデアのように定義されて?
ありがとうございました。
です。割り当て解除のランダム性は、ソースの問題として実際に自動リースに適合します。これは私がwebDataをインスタンス化するコードです:conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];だから私はそれを保持する、またはそれはまだ問題ですか? if(conn){ webData = [[NSMutableData data] retain]; } –
あなたはwebDataを保持していますので、autoreleaseはあなたの問題ではありません。更新された情報に基づいて問題が何であるかは明らかではありません。あなたのwebDataオブジェクトを割り当てるために 'if(conn) 'を使う代わりに、あなたの接続に行を移してください:didReceiveData:NSURLConnectionはメッセージを委譲し、' if(webData == nil)webData = [[NSMutableData Webデータをリリースしたところで、[webData release]、webData = nil;に変更してください。 –
リリースされたオブジェクトは、解放した直後に常にnilに設定することを強くお勧めします。これは '[webData release]; [webData getLength]; 'は常にクラッシュしますが、' [webData release]、webData = nil; [webData getLength]; 'はできません。 –