2

動作しているテーブル ビューに 4 つの都市の文字列を読み込んでいますが、セルの 1 つを選択して他のテーブルに移動すると、移動が遅すぎます。リンクが異なる他のテーブルで、以下の同じコードを使用しています。別のビューに到達するのになぜ長い時間 (~4 - 6 秒) かかるのか教えてください。

- (void)viewDidLoad
{
[super viewDidLoad];

NSURL * url  = [NSURL URLWithString:@"http://kalkatawi.com/jsonTest.php"];

NSData  * data = [NSData dataWithContentsOfURL:url];

NSError *e = nil;

jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&e];

jsonArray1 = [[NSMutableArray alloc] init];

for(int i=0;i<[jsonArray count];i++)
{                
    NSString  * city = [[jsonArray objectAtIndex:i] objectForKey:@"city"];

    [jsonArray1 addObject:city];
}

-

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

NSString *tempString = [jsonArray1 objectAtIndex:indexPath.row];
cell.textLabel.text = tempString;
return cell;
}

-

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

SeconfViewController *second = [[SeconfViewController alloc] initWithNibName:@"SeconfViewController" bundle:nil];

UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];

NSString *cellText = selectedCell.textLabel.text;

NSString *edit = [NSString stringWithFormat:@"http://kalkatawi.com/jsonTest.php?d=1&il=%@", cellText];

second.str2 = edit;

[self.navigationController pushViewController:second animated:YES];

}
4

2 に答える 2

0

おそらく、同期をダウンロードしていてメインスレッドをブロックしているため、アプリが4〜6秒間フリーズする理由である可能性があります.json非同期をダウンロードしてみてください

- (void)viewDidLoad
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    NSData *response = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://kalkatawi.com/jsonTest.php"]];
    NSError *parseError = nil;
    jsonArray = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingAllowFragments error:&parseError];
    jsonArray1 = [[NSMutableArray alloc] init]
        for(int i=0;i<[jsonArray count];i++)
        {                
          NSString  * city = [[jsonArray objectAtIndex:i] objectForKey:@"city"];

          [jsonArray1 addObject:city];
        }
    }
    dispatch_sync(dispatch_get_main_queue(), ^{
            [self.myTableView reloadData];
        });
});
}
于 2013-07-31T02:02:31.860 に答える