2013-01-13 2 views
0

온라인 데이터베이스에서 가져온 데이터 테이블을 표시하는 UIViewController가 있습니다. 나는이 데이터의 당기기를 처리하는 싱글 톤 관리자가있다 은 테이블에 필요한 데이터를 제공한다.속성이 블록에 포함되면 응용 프로그램이 중단됩니다.

는 뷰 컨트롤러가 -viewDidLoad에서 -refreshDataSource를 호출하지만, 그 동안 업데이트를 요청
@property (nonatomic) NSArray *dataArray; 
... 
- (void)refreshDataSource 
{ 
    [AClass fetchInBackgroundWithCompletionHandler:^(NSArray *objects) { 
     self.dataArray = [NSArray arrayWithArray:objects]; 
    } 
} 
... 
- (NSArray *)tableViewDataSource 
{ 
    return self.dataArray; 
} 

이 -tableViewDataSource로 지정하여 관리자의 캐시 데이터와의 jQuery과 제공 :

은 관리자가 작동하는 방법의 예입니다 .

처음 뷰 컨트롤러가 나타날 때 모든 것이 정상입니다. 두 번째로 동일한보기 컨트롤러를 제공하려고하면 앱이 중단됩니다. 네트워크 요청이 실행되지 않습니다.

유일한 수정 사항은 내 -refreshDataSource 전화를 -viewDidAppear: (으)로 이동하는 것입니다. 그러나 그것은 왜 이런 일이 일어나고 나에게 불쾌감을 안겨주는 지 나에게 가려움을 안겨줍니다.

누구든지 도움이되거나 도움이 될만한 의견이 있으면 도움이 될 것입니다.

+2

'dataArray'의'@ property' 선언에'retain'이 표시되지 않습니다. –

+1

@ s.bandara ARC에서 객체 속성의 기본값은 strong – MaxGabriel

+0

입니다. 맞아요, 제 프로젝트에서 ARC를 사용하고 있다고 언급 했어야합니다. – Ricky

답변

0

귀하의 질문에 모든 것이 설명되어 있지는 않지만 여기에 도움이되는 몇 가지 아이디어가 있습니다.

1) viewDidLoad는 처음으로 뷰가로드 될 때만 호출됩니다. 다른보기로 전환 한 다음 tableView로 돌아 가면 refreshDataSource가 호출되지 않습니다.

2) viewDidLoad는 배열이 할당되고 초기화되기 전에 실행되기 때문에 데이터를 새로 고칠 때 nil이므로 viewDidAppear에 동일한 문제가 없을 수 있습니다.

자세한 내용 없이는 구체적인 답변을 드릴 수 없습니다. "처음으로, 모든 것이 좋습니다. 내가 두 번째로 ..."더 명확하게 설명 할 수 있습니까? 가능한 경우 단계별로 수행하십시오.

+0

고마워요. 배열은 시간에 초기화 된 것처럼 보입니다. 뷰 모양에 대해 자세히 설명하기 위해 VC가 내 탐색 스택에 푸시됩니다. 나는 VC를 터뜨리고 다시 밀어 넣는다. 그리고 이것은 내 애플이 멈출 때이다. VC를 스택에 넣을 때마다'-viewDidLoad'가 호출됩니다 (예상대로). – Ricky

관련 문제