2013-09-28 2 views
1

ClassB.m 뷰를로드 한 후에 ClassA.m의 변수 값에 액세스해야하지만 ClassA에서 ClassB로 뷰를 전환 할 때 클래스 A의 변수가 삭제 된 것처럼 보입니다. ClassA에서이 변수를 유지하는 가장 좋은 방법은 무엇입니까? 자바에서 이것은 정적 변수의 형태로 다소 쉽습니다. 그러나 Objective-C에서 이러한 개념을 알지 못합니다. "extern"변수를 사용하는 것이 좋습니다면, 그 변수 유형도 뷰 전환 후에 손상된 것으로 보입니까? 아마도 내가 잘못 구현 한 것이지만 당신의 생각은 무엇입니까? 첫 번째보기를 닫은 후에 두 번째보기에서 변수의 값을 어떻게 유지합니까?보기 컨트롤러를 전환 한 후 변수 값을 유지하는 방법은 무엇입니까?

답변

2

새 viewcontroller에서 속성을 만들고 현재 viewcontroller의 변수를 new로 전달할 수 있습니다. exp를 보아라.

DetailsViewController *detailsviewcontroller = [[DetailsViewController alloc] initWithNibName:@"EventDetailsViewController" bundle:nil]; 
eventdetailsviewcontroller.event = localvar; 
[self.navigationController pushViewController:detailsviewcontroller animated:YES]; 
1

지금은 정적 변수를 잊어 버립니다. 그 아이디어는 에 관계없이 객체가 해당 뷰의에 관계없이 유지되도록하려는 것입니다. 그것이 mediator pattern입니다. 기본적으로 콘트롤러 컨트롤러를 갖기를 원한다. (컨트롤러를 싱글 톤으로 만들어야한다.) 컨트롤러는 뷰가오고가는 동안 유지하고 싶은 모든 변수에 대한 참조를 유지할 수있다.

이렇게하면 잠재적으로 관련없는 컨트롤러 간의 종속성을 줄이고 접착제 코드를 줄이는 코드로 분리 할 수 ​​있습니다.

나는 비슷한 대답을 here에게 주었다.

-2

Objective-C에서 정적 변수를 사용할 수 있습니다. Test.m 파일의 예입니다.

static NSMutableDictionary* single = nil; 

@implementation Test 

@end 
관련 문제