Arrays ivar在ARC下发布-如何保留它以用于其他方法?
几周来,我一直在为一些事情苦苦挣扎,这给我的进步带来了真正的停顿。我已经问了几次问题,所以,人们一直在帮助我,但没有人发现我做错了什么。这似乎是一件相当简单的事情,所以希望有人会有一个灯泡的时刻,并解决这个问题。我正在实现一个TWRequest,结果将返回到一个字典中,我正在循环搜索结果以提取tweet的一部分,并创建这些“文本”组件的数组。在循环中直接输入我正在打印数组的日志-\u twitterText,它打印得很好。此方法完成后不久,twitterText似乎被转储。我在.h文件中创建了它作为强属性,并在viewdidload中创建了一个ivar。还是没有快乐如何保留此数组以用于其他方法? 这是我的.h文件Arrays ivar在ARC下发布-如何保留它以用于其他方法?,arrays,uitableview,ivar,twrequest,Arrays,Uitableview,Ivar,Twrequest,几周来,我一直在为一些事情苦苦挣扎,这给我的进步带来了真正的停顿。我已经问了几次问题,所以,人们一直在帮助我,但没有人发现我做错了什么。这似乎是一件相当简单的事情,所以希望有人会有一个灯泡的时刻,并解决这个问题。我正在实现一个TWRequest,结果将返回到一个字典中,我正在循环搜索结果以提取tweet的一部分,并创建这些“文本”组件的数组。在循环中直接输入我正在打印数组的日志-\u twitterText,它打印得很好。此方法完成后不久,twitterText似乎被转储。我在.h文件中创建了它
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import "CustomCell.h"
#import "AppDelegate.h"
#import <Twitter/Twitter.h>
@interface MyViewController : UITableViewController <CLLocationManagerDelegate>
{
CLLocationManager *here;
}
@property(strong) NSDictionary *dict;
@property(strong) CLLocationManager *here;
@property (strong, nonatomic) NSMutableArray *twitterText;
- (void)fetchTweets;
@end </p>
因此,这里的问题是,在网络连接完成且服务器响应您的请求之前,您传递给
-[tweet performRequestWithHandler:
的完成处理程序不会(无法)启动。这可能需要数百毫秒甚至几秒钟才能完成。(或者它可能永远不会发生)
同时,当这种情况发生时,UITableView希望自己绘制,因此会询问您有多少节/行,然后会询问您每行有一个单元格。因此,当表格视图询问时,您应该返回当时必须绘制的实际行数:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [self.twitterText count]; // the actual number of rows we have right now
}
因此,下一步需要的是在数据实际从服务器输入时重新加载表。这将提示表视图再次询问节数和行数,然后询问每个节数和行数的单元格。因此,在处理完所有数据后,您需要在完成块的某个位置执行以下操作:
dispatch_async(dispatch_get_main_queue(), ^{
// you'll need an outlet to the UITableView
// here I assume you call that 'tableView'
// then just ask it to reload on the main thread
[self.tableView reloadData];
});
我希望这会有所帮助?所以这里的问题是,在网络连接完成并且服务器响应您的请求之前,您传递给
-[tweet performRequestWithHandler:
的完成处理程序不会(无法)启动。这可能需要数百毫秒甚至几秒钟才能完成。(或者它可能永远不会发生)
同时,当这种情况发生时,UITableView希望自己绘制,因此会询问您有多少节/行,然后会询问您每行有一个单元格。因此,当表格视图询问时,您应该返回当时必须绘制的实际行数:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [self.twitterText count]; // the actual number of rows we have right now
}
因此,下一步需要的是在数据实际从服务器输入时重新加载表。这将提示表视图再次询问节数和行数,然后询问每个节数和行数的单元格。因此,在处理完所有数据后,您需要在完成块的某个位置执行以下操作:
dispatch_async(dispatch_get_main_queue(), ^{
// you'll need an outlet to the UITableView
// here I assume you call that 'tableView'
// then just ask it to reload on the main thread
[self.tableView reloadData];
});
我希望这能有所帮助?快速检查是否正常:您能在每次登录twitterText之前登录
NSLog(@“我是%@”,self)
吗?嗨,菲罗兹,我在这两种情况下都能完美地打印日志-““您确定它们按您期望的顺序打印吗?”?fetchTweets触发异步请求。在tableView:cellforrowatinexpath:
yes之后,它可能很容易完成,此外,如果我取消对live“cell.venueDetails.text=[\u twitterText objectAtIndex:indexPath.row];”的注释,我会得到一个sigabt,因为_twitterText是一个空数组,完成处理程序在http调用完成之前无法完成其工作。因此,这里的正常模式是在tableView:numberofrowsinssection:
中返回零(或某个占位符),直到实际有内容显示为止。当您有内容要显示时(在服务器响应后),重新加载表并返回正确的行数和每行的单元格。快速检查是否正常:您能否在每次登录twitterText之前登录NSLog(@“我是%@”,self)
。您好,Firoze,我在这两种情况下都能完美打印日志-“”您确定他们正在按您期望的顺序打印吗?fetchTweets触发异步请求。在tableView:cellforrowatinexpath:
yes之后,它可能很容易完成,此外,如果我取消对live“cell.venueDetails.text=[\u twitterText objectAtIndex:indexPath.row];”的注释,我会得到一个sigabt,因为_twitterText是一个空数组,完成处理程序在http调用完成之前无法完成其工作。因此,这里的正常模式是在tableView:numberofrowsinssection:
中返回零(或某个占位符),直到实际有内容显示为止。当您有内容要显示时(在服务器响应之后),重新加载表并返回正确的行数和每行的单元格。太棒了。你是一个传奇!!非常感谢你-我很快就试一试了,它似乎正按正确的顺序发射。你是一个传奇!!非常感谢你-我已经给了它一个快速的尝试,它似乎是在正确的顺序发射