2014-08-29 2 views
1

요약 : rootViewController가 포인터로 설정됩니다. 내가 포인터를 변경하고 rootViewController 나던 변화.포인터의 주소를 가리 키도록 rootViewController를 설정하는 방법

내 rootViewController를 'currentViewController'라는보기 컨트롤러에 대한 포인터로 설정했습니다.

'currentViewController'가 다른 UIViewController를 가리 키도록 변경합니다. iPhone/iPad가 화면을 업데이트하지 않습니다. 왜?

사이드 참고 작동하지 않습니다 다음 - 그것은 인덱스 뷰 컨트롤러를 보여줍니다 = 0은 인덱스 1에서의 ViewController를 보여주기 때문에, 작업을 수행하지만, 이해가되지 않습니다 다음

_currentViewController = [self.viewControllers objectAtIndex:0]; 
[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController; 
_currentViewController = [self.viewControllers objectAtIndex:1]; 

보조 노트 나에게 (나는 이미 rootViewController에게 처음으로 가리켜 야 할 부분에 대해 말씀 드렸습니다) :

답변

2

포인터와 할당이 어떻게 작동하는지 오해합니다. 당신이 쓸 때 :

[[[UIApplication sharedApplication] delegate] window].rootViewController = _currentViewController; 

을 ... 무슨 일 rootViewController 지금은 메모리에 일부 개체의 주소 값을 보유하고 있다는 점이다. currentViewController이 가리키는 값을 변경하면 (즉 값을 변경하는 경우) rootViewController에 영향을주지 않습니다. 그것은 당신이 가리 키라고 말한 것을 가리 킵니다 (즉, 그 값은 변하지 않습니다).

마치 rootViewController_currentViewController의 별칭이되는 것처럼 지정을 처리하고 있습니다. 이것은 발생하지 않습니다. 결과는 rootViewController에 값이 할당되어 있습니다. 그게 전부 야. 다른 값을 원하면 명시 적으로 할당을 수행해야합니다. 이것이 두 번째 예제가 작동하는 이유입니다.

+0

답장을 보내 주셔서 감사합니다. 어쨌든 위임] 창] .rootViewController = 'setter'_currentViewController (_currentViewController 값을 복사하는 대신) _currentViewController의 주소를 가리 키도록 rootViewController를 설정? – user1709076

+0

lwburk가 위에서 말했듯이, 포인터는 메모리 주소만을 보유합니다. 참조 유형입니다. 임의의 수의 포인터가 동일한 메모리 주소를 가리킬 수 있습니다. 그것은 귀하의 실제 주소와 유사합니다 : 종이에 주소를 적는 경우 그것은 귀하의 집이 아닙니다 ... 단지 그것을 발견 할 수 있도록 귀하의 집에 "포인트"가 붙어 있습니다 :) –

+0

컴퓨터 용어로, 메모리 주소는 가리키고있는 것이고 포인터는 실생활에서 "주소"와 같습니다. 그것은 아마도 매우 혼란 스럽습니다. –

관련 문제