2012-06-26 4 views
0

UIViewController의 루트가 UINavigationController입니다. 내가하고있는 일은 동일한 유형의 다른 UIViewController을 인스턴스화하고 일부 속성을 설정하고 스택 맨 위로 밀어 넣는 것입니다.동일한 UIViewController의 여러 인스턴스

여기에서 문제는 상위보기 컨트롤러가 해당 속성을 변경한다는 것입니다. 여기

내가 그것을하고있어 방법은 다음과 같습니다

RootViewController *rootViewController = [[RootViewController alloc] initWithRequest:request]; 
[self.navigationController pushViewController:rootViewController animated:YES]; 

왜 이런 일이 무엇입니까? 이렇게하면 View Controller의 새 인스턴스를 만들고 똑같은 속성을 다른 객체 인스턴스에 복사하지 않습니까?

+0

"부모보기 컨트롤러가 해당 속성을 변경하고 있습니다"라는 것이 정확히 무엇을 의미합니까? 부모보기 컨트롤러로 돌아 가면 어떤 변화가 있습니까? 그리고이 코드 스 니펫이 어디에 살고 있는지, 당신의 어딘가에서 뷰 컨트롤러 내에서 가정하고 있음을 나타낼 수 있습니까? – jrturton

답변

1

두보기 컨트롤러는 이제 동일한 request 개체에 대한 포인터를 갖습니다. 변경 사항은 두 컨트롤러 모두에 반영됩니다. 컨트롤러가 수정할 수있는 경우 request 개체를 대신 복사해야합니다.

+0

오 .. 왜 그래? 'alloc init'은 새로운 다른 객체를 인스턴스화하지 않습니까? 아니면 C/C++과 다른 Objective-C의 기본값입니까? 'request'에'copy' 속성을 사용해 보았는데 작동하지 않았습니다. 그러면 어떻게 복사 할 수 있습니까? – darksky

+0

보기 컨트롤러 만 할당/삽입했습니다. 그것은 다른 객체이지만 질문의 제한된 정보에서 컨트롤러에 표시되는 내용은 설명하지 않은 'request'속성에 따라 달라질 수 있습니다. 그것의 사용자 지정 개체 인 경우 직접 복사를 구현해야합니다. 자세한 내용은 NSCopying 프로토콜을 참조하십시오. – jrturton

+0

예 - AppDelegate에서 할당했습니다. 그리고 위의 그림과 같이 앱 자체에서 다시. 같은 속성을 별도로 복사 한 두 개의 서로 다른 개체를 의미하지 않습니까? 요청에 'NSURLRequest'가 있습니다. 뷰 컨트롤러 내에서 'UIWebView'에서 처리됩니다. 다음은 속성입니다 :'@property (nonatomic, strong) NSURLRequest * request;'. 어떻게 그걸 복사하겠습니까? 'NSCopying '사용하기? – darksky

관련 문제