2016-11-16 7 views
0

私はiPhoneアプリのプロジェクトに飛び込んだ。エラーEXC_BAD_ACCESS(コード1、アドレス= 0xcc)

- (NSURLSessionDataTask *)GET:(NSString *)URLString 
        parameters:(NSDictionary *)parameters 
         success:(void (^)(NSURLSessionDataTask *task, id responseObject))success 
         failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure 
{ 
    NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:@"GET" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:nil]; 

// Below line throws error EXC_BAD_ACCESS (Code 1, address=0xcc) 

    __block NSURLSessionDataTask *task = [self dataTaskWithRequest:request completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) { 
     if (error) { 
      if (failure) { 
       failure(task, error); 
      } 
     } else { 
      if (success) { 
       success(task, responseObject); 
      } 
     } 
    }]; 

    [task resume]; 

    return task; 
} 

私はapiが適切なデータを返すことを確認しました。 ゾンビオブジェクトを有効にしようとしました。

私は迅速かつiOS開発の新人です。誰かが次に調べるべきことを教えてください。

+0

これはSwiftコードではなく、Objective-Cコードです。適切なユーザー層を見つけるためにタグを編集しました。 – jjs

+0

まだ例外ブレークポイントを作成しようとしましたか?このコードは問題が発生する場所ではないかもしれません – Tj3n

+0

どうすればいいですか? –

答えて

0

私はこの問題をソースコードをデバッグし、ロジックを再解析することによってのみ解決しました。

以下は参考になるものです。

EXC_BAD_ACCESSは、メッセージを実行するクラスのインスタンスが存在しないメモリ内のポイントにメッセージが送信されたことを意味します。したがって、「悪いアクセス」。

あなたは3例にEXC_BAD_ACCESSを取得します:

  1. オブジェクトが
  2. オブジェクトを初期化されていないが、すでにだ

が起こる可能性が非常に高いではない他の

  • 何かをリリースしていますすでに良い出発点です。デバッガの使用を開始します。作業中のクラスに最近新しいオブジェクトを追加した場合は、新たに追加されたオブジェクトが初めて使用される前にブレークポイントを設定し、デバッガの値をチェックします。

    何が起こっているかは、オーバーリリースされたオブジェクト(つまり、コールスタックから消えたオブジェクト)にメッセージを送信することです。この場合、コンソールに入るすべてのもの(実際にはすべて)は次のようになります。EXC_BAD_ACCESS

    これは、オブジェクトがなくなったか、何のクラスであったか、何のソースファイルなのかなどの情報がないためです。

  • 関連する問題