2011-12-22 4 views
-2

Xcode 4.2.1에서 표준 페이지 기반 응용 프로그램을 만들었습니다.페이지 기반 응용 프로그램 수정

나는 ModelController.m

을 변경해야 할 것은이 방법 - 각 페이지에 대해

- (DataViewController *)viewControllerAtIndex:(NSUInteger)index storyboard:(UIStoryboard *)storyboard; 

이 방법이 만든 새 DataViewController

나는 모든 페이지에 대해 하나의 DataViewController 인스턴스를 사용할
DataViewController *dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"]; 

이 애플리케이션에서 방법을 변경하려면 viewControllerAtIndex 다음과 같이하십시오 :

if (dataViewController == NULL) { 
    dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"]; 
} 

dataViewController.dataObject = [self.pageData objectAtIndex:index]; 

그러나 이것은 올바르게 작동하지 않습니다.

미리 감사드립니다.

+2

"이것은 제대로 작동하지 않습니다"누구에게 유용하지 않습니다. 그게 뭐가 잘못 됐어? – jrturton

답변

0

나는 사람들이 '어떻게'작동하지 않는지에 대해 더 자세히 알고 싶어한다고 생각합니다. DataViewController의 여러 인스턴스를 생성하는 경우, 블록을 @synchronized 블록에 넣으려고 했습니까? 어둠 속에서 촬영의 종류,하지만 그게 내가 처음에 시도 할 것입니다 ..

+0

"방법"을 잘 설명 할 수 없습니다. 하지만 블록을 @synchronized 블록에 넣으면 도움이 될까요? 감사합니다. – isak

+0

동시에 여러 개의 스레드가 if 블록에 액세스하는 것을 방지 할 수 있습니다. 그런 경우 [storyboard instantiate ...]가 두 번 이상 호출 될 수 있습니다. 여러 스레드가이 코드 조각에 액세스하는 상황을 파악하기는 어렵지만 전체 코드를 모르기 때문에 시도해 볼 가치가 있다고 생각했습니다. – barley

+0

내 버그라고 생각하니? 아닙니다. 일반적으로 각 페이지의 새 인스턴스를 만드는 Apple 템플릿입니다. 그리고 ModelController.m의 머리 부분에서 "각 페이지에 대한 뷰 컨트롤러를 실제로 미리 생성 할 필요가 없습니다. 실제로 실제로 불필요한 오버 헤드가 발생합니다"라고 읽을 수 있습니다. – isak

관련 문제