iOS 5 推特 API

标签 ios twitter

我开发了一个连接到 Twitter 并获取信息的小型应用程序。我想在前端向用户显示这些信息。问题在于,由于 Twitter API 使用线程,当我尝试与 GUI 交互时,出现以下错误:

试图从主线程或网络线程以外的线程获取网络锁。这可能是从辅助线程调用 UIKit 的结果。

我的问题是,我如何才能在主线程中知道何时收到 Twitter 的响应,以便我能够将其显示给用户?

代码是这样的,它在一个函数中:

NSString * url = [[NSString alloc] initWithFormat:@"http://search.twitter.com/search.json?q=%@", query];

TWRequest * request = [[TWRequest alloc] initWithURL:[NSURL URLWithString:url] parameters:nil 
    requestMethod:TWRequestMethodGET];    

[request performRequestWithHandler:^(NSData * responseData, NSHTTPURLResponse * urlResponse, NSError * error)
 {
     if ([urlResponse statusCode] == 200) 
     {
         // format response and show to user
         // show to user
     }
     else
     {
         NSLog(@"Twitter error, HTTP response: %i", [urlResponse statusCode]);

     }
 }];

如果我尝试通过此函数修改 GUI,则会出现错误。

谢谢

最佳答案

从后台线程更改 UI 是绝对不允许的。在这种情况下,您应该在 TWRequest 响应 block 中调用 [self performSelectorOnMainThread:withObject:waitUntilDone:]。见下文

例子...

   - (void)makeRequest {

   NSString * url = [[NSString alloc] initWithFormat:@"http://search.twitter.com/search.json?q=%@", query];

   TWRequest * request = [[TWRequest alloc] initWithURL:[NSURL URLWithString:url] parameters:nil 
requestMethod:TWRequestMethodGET];    

      // make the request..
   [request performRequestWithHandler:^(NSData * responseData, NSHTTPURLResponse * urlResponse, NSError * error)
          {
               if ([urlResponse statusCode] == 200) 
               {
                     [self performSelectorOnMainThread:@selector(updateUI) withObject:nil waitUntilDone:NO]
               }
               else
               {
                     NSLog(@"Twitter error, HTTP response: %i", [urlResponse statusCode]);

               }
           }];
   }

   - (void)updateUI {
          // here you can now update your UI safely
   }

关于iOS 5 推特 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110060/

相关文章:

java - 使用 java 从推文中排除一些单词

java - 解析 Twitter API 1.1 JSON

twitter - Twitter Storm Worker 只能获取部分拓扑吗?

ios - 对核心数据实体进行排序的最佳方法是什么?

ios - automaticallyAdjustsScrollViewInsets 在带有 UITableView 的嵌入式 UITableViewController 中不起作用

iphone - Twitter 身份验证 OAuth 或 XAuth

java.lang.NoClassDefFoundError : org/mule/api/ConnectionException when trying to use twitter connector 错误

ios - 如何在自动布局打开时以编程方式更改 UIView 的位置

ios - 在 iOS 7 上更改标签栏色调颜色

ios - WkWebView 实例化中的内存泄漏