2013-08-29 4 views
0

2 초마다 자체적으로 새로 고침하는 테이블이 있습니다. 그것은 시뮬레이터 및 내 와이파이에서 좋은 작동. 그러나 셀룰러 네트워크 (또는 느린 네트워크)로 전환하면 안정적으로 행을 선택할 수 없습니다.지연된 네트워크 - 지연된 DidSelectRowAtIndexPath

때때로 행을 클릭하면 8 초 후에 작동합니다. 때로는 결코.

필자의 새로 고침 기능이 지연의 원인이라고 생각했지만 기능의 시작과 끝 부분에 시간을 인쇄했으며 2 밀리 초 밖에 걸리지 않았습니다.

비슷한 네트워크 문제가있는 사람이 있습니까?? 전화 끊기의 원인이 될 수있는 정보는 무엇입니까?

내 새로 고침 기능이있는 viewDidLoad에서 호출됩니다

- (void) updateMethod 
{ 
    [columnArray removeAllObjects]; 
    [self getColumnData]; 
    [homeTable reloadData]; 

} 

getColumnData 웹 사이트 호출하고 당신은 네트워크 작업을 수행해서는 안 columnArray

+0

귀하의 didselectrowatindexpath가 "새로 고침"기능을 호출합니까? – Max

+0

응답으로 내 질문을 편집했습니다 - viewDidLoad에서 호출되었습니다 – AllieCat

+0

'updateMethod'를 게시 할 수 있습니까 – RyanG

답변

2

에 데이터를 넣습니다 :

//Set timer to call refresh function every two seconds 
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updateMethod) userInfo:nil repeats:YES]; 

내 updateMethod입니다 메인 큐에. NSOperationQueue를 생성하여 네트워크 로직을 백그라운드 큐로 이동하고 네트워크 작업이 끝나면 메인 큐에서 UI 업데이트 만 수행 할 수 있습니다.

NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
queue.name = @"Data request queue"; 

[queue addOperationWithBlock:^{ 
    [self getColumnData]; 
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
     [homeTable reloadData]; 
    }]; 
}]; 
+0

'updateMethod'에 코드를 구현할 때 SIGABRT 오류가 발생합니다. 이 코드는 어디로 가야합니까? – AllieCat

+0

오류 이유 : *** - [__ NSArrayM objectAtIndex :] : 인덱스 1이 범위를 벗어납니다 [0 .. 0]. "[columnArray removeAllObjects];"를 추가했습니다. 앞에 [self getColumnData]. 그게 잘못 되었습니까? – AllieCat

+0

예, updateMethod에서 대기열을 만들 수 있습니다. 좀비를 사용하고 모든 예외에 대한 중단 점을 만들어 오류에 대해 알아보십시오. – serrrgi