2013-08-19 81 views
1

我使用的Web服务的iPhone应用程序开发太缓慢。我使用NSDictionary来使用JSONParsing获取数据。这是一个从Web服务来快速,但它太缓慢,同时结合我的看法/ XIB.I我不是得到什么是this.Because这是他们的任何其他解决方案或工作例如快于Android,但不是iPhone.Is实际问题解决这个问题。数据绑定,查看是在使用Web服务

码 -

- (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

你的问题是不是远程连接到Xcode中的图像数据。它恰好是你正在使用的ide。 –

+0

请显示一些代码,特别是将数据绑定到视图的位置。并提供一些细节,说明你如何发现请求很慢,但数据绑定不是。 –

+0

确保您正在主线程上更新您的用户界面。有可能您的下载发生在后台线程上,然后您将更新您的视图(您不应该这样做)。由此可见,您的用户界面会慢慢更新。正如@HermannKlecker所说,发布一些代码。 – sbarow

回答

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]; 
    }); 
}); 
+0

不确定你的评论是什么意思,你能解释一下吗? – sbarow

+0

这仍然没有意义?我不确定你在问什么? – sbarow

+0

看一看苹果http://developer.apple.com/library/ios/samplecode/LazyTableImages/Introduction/Intro.html此代码示例 – sbarow

1

我没有得到这有什么实际问题。

我们也不是,坦率地说。如果你没有向我们展示代码,为什么你的代码很慢,这是不可能的。听起来像真正的问题是你不确定你的代码的哪一部分很慢。所以,让我告诉你如何解决这个问题:配置文件

Xcode中包括一个名为仪器一个强大的工具,可以让你看看你的应用程序是多少时间在每个方法花费它,使用多少内存,多大的权力,等等。在解释如何使用它有点太深入,这种响应,那么请开始与Instruments User Guide短的版本是,你可以使用产品 - >测试菜单命令下,仪器启动您的应用程序,这样做会让你收集和分析许多不同类型的性能数据。如果你发现一个高级方法似乎比它应该花费的时间更长,你可以深入研究该方法,并查看它调用的方法以及这些方法依次调用的方法。

武装带,你可以从仪器得到的信息,你就不必想知道为什么你的代码是慢的 - 你就可以凭经验找到答案。