【发布时间】:2013-01-03 10:03:57
【问题描述】:
我正在尝试在UITableView 中显示推文。
代码:-
- (void)requestTimeline:(int)count
{
NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/user_timeline.json"];
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setObject:@"abc" forKey:@"screen_name"];
[parameters setObject:@"20" forKey:@"count"];
[parameters setObject:@"1" forKey:@"include_entities"];
TWRequest *request = [[TWRequest alloc] initWithURL:url parameters:parameters requestMethod:TWRequestMethodGET];
[request performRequestWithHandler:^(NSData *responseData1, NSHTTPURLResponse *urlResponse, NSError *error)
{
if (responseData1 != nil)
{
NSError *error = nil;
self.itemsToDisplay = [NSJSONSerialization JSONObjectWithData:responseData1 options:NSJSONReadingMutableLeaves error:&error];
if (self.itemsToDisplay != nil)
{
[self.tableView reloadData];
}
else
{
NSLog(@"Error serializing response data %@ with user info %@.", error, error.userInfo);
}
}
else
{
NSLog(@"Error requesting timeline %@ with user info %@.", error, error.userInfo);
}
}];
}
self 是UITableViewController 的子类。
由于阻塞,twitter请求将在另一个线程上执行,而不是在主线程上。这就是它崩溃的原因。
//TWRequest.h
// Issue the request. This block is not guaranteed to be called on any particular thread.
- (void)performRequestWithHandler:(TWRequestHandler)handler;
崩溃报告:-
bool _WebTryThreadLock(bool), 0xa8e4f50: 试图获取网络锁 来自除主线程或网络线程之外的线程。这可能 是从辅助线程调用 UIKit 的结果。崩溃 现在...
如何解决这个问题?
谢谢...
【问题讨论】:
-
你是否尝试在主线程上执行
reloadData? -
是的,我做了,但没用...
-
不,你没有,因为他的代码是错误的。它会有所帮助:)
标签: iphone objective-c ios uitableview