iOS 5の新しいTWRequest
APIを使用して、ブロックの使用に関連したレンガの壁にぶつかってきました。Objective-Cのブロック内でブロックを使用する:EXC_BAD_ACCESS
私がしなければならないことは、最初の要求に対して成功した応答を受け取ったときに、すぐに別の要求を起動することです。 2番目のリクエストの完了ブロックで、私はマルチステップ操作の成功または失敗を通知します。
は、ここで私がやっている大まかです:
- (void)doRequests
{
TWRequest* firstRequest = [self createFirstRequest];
[firstRequest performRequestWithHandler:^(NSData* responseData,
NSHTTPURLResponse* response,
NSError* error) {
// Error handling hidden for the sake of brevity...
TWRequest* secondRequest = [self createSecondRequest];
[secondRequest performRequestWithHandler:^(NSData* a,
NSHTTPURLResponse* b,
NSError* c) {
// Notify of success or failure - never reaches this far
}];
}];
}
を私は要求のいずれかを保持または任意の場所にそれらへの参照を保持しておりません。それはちょうど火災と忘れている。
はしかし、私はアプリを実行すると、それは上EXC_BAD_ACCESS
でクラッシュ:
[secondRequest performRequestWithHandler:...];
それだけで罰金最初の要求を実行するが、私はハンドラを有する第2 1を起動しようとすると、それがクラッシュします。そのコードの何が間違っていますか?
リクエストを作成するための方法は、のように簡単です:私はTW *に精通していないよので、この野生の推測を検討
- (TWRequest*)createFirstRequest
{
NSString* target = @"https://api.twitter.com/1/statuses/home_timeline.json";
NSURL* url = [NSURL URLWithString:target];
TWRequest* request = [[TWRequest alloc]
initWithURL:url parameters:params
requestMethod:TWRequestMethodGET];
// _twitterAccount is the backing ivar for property 'twitterAccount',
// a strong & nonatomic property of type ACAccount*
request.account = _twitterAccount;
return request;
}
'createFirstRequest'と' createSecondRequest'のコードを投稿してください – vikingosegundo
'-createSecondRequest'のコードを投稿できますか?私は、このコードがバックグラウンドスレッド上で実行されることに問題があると推測しています。これは、完了ハンドラがどのスレッドを実行するかについて決して保証されないからです。 –
完了;申し訳ありませんが、それは関連性があるとは思わなかった。 – biasedbit