我正在使用Web服务进行iPhone App开发。我使用NSDictionary来使用JSONParsing获取数据。它来自Web服务很快,但是绑定到我的视图/ XIB时速度太慢。我没有得到这个问题的实际问题。因为它在Android上运行速度很快但在iPhone上没有。这是他们的任何其他解决方案或示例解决这个问题。
代码 -
- (void)viewDidLoad
{
//returning cell with name & logo
NSLog(@"activity array = %@",activityArray);
addNameList = [[NSMutableArray alloc]init];
addThumbnails = [[NSMutableArray alloc]init];
addActivityId = [[NSMutableArray alloc]init];
for (int x=0; x<[activityArray count]; x++)
{
NSDictionary* toDist = [activityArray objectAtIndex:x];
[addNameList addObject:[toDist objectForKey:@"activity"]];
[addThumbnails addObject:[toDist objectForKey:@"icon"]];
[addActivityId addObject:[toDist objectForKey:@"id"]];
}
activityList = addNameList;
thumbnails = addThumbnails;
activityIdList = addActivityId;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
NSString *str = [NSString stringWithFormat:@"%@",[thumbnails objectAtIndex:indexPath.row]];
cell.imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:str]]];
cell.textLabel.text = [activityList objectAtIndex:indexPath.row];
UIImageView *backImage = [[UIImageView alloc] initWithFrame:CGRectMake(20,20,277,58)];
backImage.backgroundColor = [UIColor clearColor];
backImage.opaque = NO;
backImage.image = [UIImage imageNamed:@"cellBackgroundImage.png"];
cell.backgroundView = backImage;
return cell;
}
答案 0 :(得分:1)
我没有得到这个的实际问题。
坦率地说,我们也不是。如果你没有向我们展示代码,那么你的代码为什么会变慢是不可能的。听起来真正的问题是你不确定代码的哪一部分很慢。因此,让我告诉您如何解决这个问题:描述您的代码。
Xcode包含一个名为Instruments的强大工具,可让您查看应用在每种方法中花费的时间,使用的内存量,功率等等。解释如何使用它对于此响应有点过于深入,所以请从Instruments User Guide开始。简短版本是您可以使用Product-&gt; Test菜单命令在Instruments下启动您的应用程序,以及这样做可以让您收集和分析许多不同类型的性能数据。如果您发现一个高级方法似乎花费的时间超过应有的时间,您可以深入查看该方法并查看它调用的方法,以及这些方法依次调用的方法。
有了您可以从乐器获得的信息,您将不必怀疑代码为何缓慢 - 您将能够凭经验找到答案。
答案 1 :(得分:0)
如果您还没有想出如何在后台加载图像数据
NSString *str = [NSString stringWithFormat:@"%@",[thumbnails objectAtIndex:indexPath.row]];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:str]];
dispatch_async(dispatch_get_main_queue(), ^{
cell.imageView.image = [UIImage imageWithData:data];
});
});