IOS5のObjective Cのブロック&と組み合わせて、インスタンス変数に関する質問があります。ブロック内のインスタンス変数にアクセスするiPhone EXC_BAD_ACCESS
私は、このコードにアクセスすると間もなく、iPhoneは私にEXC_BAD_ACCESSを与え、終了:
- (void) doRequest: (void (^)(XMLTreeNode*))completionHandler {
NSString * urlString = [NSString stringWithFormat:@"blablaurl=%@&", action];
for(NSString* key in parameters){
urlString = [urlString stringByAppendingFormat:@"&%@=%@", key, [parameters objectForKey:key]];
}
NSURL * url = [NSURL URLWithString:urlString];
NSLog(@"Visiting: %@", [url absoluteString]);
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"GET"];
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse * response, NSData * data, NSError * err) {
NSLog(@"Params=%@", parameters);
completionHandler(e);
}];
}
EXC_BAD_ACCESSが上で発生します。 のNSLog(@ "のparams =%@"、パラメータ);
ただ、ヘッダ・ファイルに定義されて...、特別なプロパティまたは(パラメータは、クラスのインスタンス変数をある)何-SO-史上..
なぜそれがクラッシュしないと私はそれをどのように防ぐことができますか?ありがとう!
私の推測では、doRequest呼び出し後にオブジェクトの存続期間が終了し、したがってARCはすべての変数(およびそのパラメータvar)をクリーンアップするため、クラッシュします。urlconnectionが完了してブロックを呼び出すと、
パラメータの種類を教えてください。 – Kamarshad
そのNSDictionary – Nick
あなたのパラメータを割り当てます。 NSLogを試して空であるかどうかを確認してください – Hiren