Sử dụng API TWRequest
mới của iOS 5, tôi đã chạy vào một bức tường gạch liên quan đến việc sử dụng khối.Sử dụng các khối trong khối trong Objective-C: EXC_BAD_ACCESS
Điều tôi cần làm là khi nhận được phản hồi thành công đối với yêu cầu đầu tiên, ngay lập tức kích hoạt một yêu cầu khác. Trên khối hoàn thành của yêu cầu thứ hai, tôi sau đó thông báo thành công hay thất bại của hoạt động đa bước.
Dưới đây là khoảng những gì tôi đang làm:
- (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
}];
}];
}
Tôi không giữ lại một trong các yêu cầu hoặc giữ một tham chiếu đến bất cứ nơi nào; nó chỉ là lửa và quên.
Tuy nhiên, khi tôi chạy ứng dụng, nó bị treo với EXC_BAD_ACCESS
trên:
[secondRequest performRequestWithHandler:...];
Nó thực hiện yêu cầu đầu tiên tốt, nhưng khi tôi cố gắng để khởi động một thứ hai với một handler, nó bị treo. Có gì sai với mã đó?
Các phương pháp để tạo ra các yêu cầu là đơn giản như:
- (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;
}
vui lòng đăng mã 'createFirstRequest' và' createSecondRequest' – vikingosegundo
Bạn có thể đăng mã cho '-treateSecondRequest' không? Tôi đoán có một vấn đề với mã này đang chạy trên một chủ đề nền vì không bao giờ có một đảm bảo về mà thread một trình xử lý hoàn thành sẽ chạy trên. –
Xong; xin lỗi 'bout rằng, không nghĩ rằng nó sẽ có liên quan. – biasedbit