2013-08-19 80 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短的版本是,你可以使用產品 - >測試菜單命令下,儀器啓動您的應用程序,這樣做會讓你收集和分析許多不同類型的性能數據。如果你發現一個高級方法似乎比它應該花費的時間更長,你可以深入研究該方法,並查看它調用的方法以及這些方法依次調用的方法。

武裝帶,你可以從儀器得到的信息,你就不必想知道爲什麼你的代碼是慢的 - 你就可以憑經驗找到答案。