클래스 이름에 대해 어떻게 자리 표시자를 사용합니까? 들어오는 매개 변수를 기반으로 다른 클래스를 이름으로 참조하는 메소드가 있습니다. 아래의 예제에서는 하나의 예제만으로 ViewController 배열이 아닌 이름만으로 세 개의 ViewController 중 하나를로드 할 수 있어야합니다. 이 방법은 '1'클래스 이름에 대한 NSString 자리 표시 자
NSString *nameOfVCToLoad = [vcArray objectAtIndex:vcNumberToLoad]; //this would = secondViewControllerName
UIViewController secondViewControllerName = [[UIViewController alloc] init];
[self.navigationController pushViewController:secondViewControllerName animated:NO];
다른 질문의 매개 변수와 함께 실행 된 경우
-(void)loadViewController:(int)vcNumberToLoad
{
NSString *vcOne = @"firstViewControllerName";
NSString *vcTwo = @"secondViewControllerName";
NSString *vcThree = @"thirdViewControllerName";
NSArray *vcArray = [NSArray arrayWithObjects:vcOne, vcTwo, vcThree, nil];
NSString *nameOfVCToLoad = [vcArray objectAtIndex:vcNumberToLoad];
UIViewController |VALUE OF nameOfVCToLoad| = [[UIViewController alloc] init]; // What is the code to get the value of nameOfVCToLoad to be used as the instance name of the UIVC class
[self.navigationController pushViewController:|VALUE OF nameOfVCToLoad| animated:NO];
}
예를 들어, 친밀한하는 것 그 [NSClassFromString : nameOfVCToLoad] 내가 필요의 라인을 따라 수, 그렇다면 어떻게?
왜 당신을에게인지 isKindOfClass는 식별하는 것이 도움이 될 것입니다 ** 로컬 ** 변수 이름에 대해 신경 써야합니까? – Vladimir
이것은 순전히 클래스의 실제 이름에 대한 자리 표시 자로 NSString을 사용하는 방법을 알고 자하는 주요 요점을 설명하기위한 예제였습니다. – Ryan
변수 이름은 개발 세션 중에 코드를 읽을 수있게하기위한 것입니다. _runtime_에서 var의 이름은 프로세서에서 사용하지 않고 _addresses_에서만 작동합니다. 그래서 _runtime_ 동안 변수 이름을 동적으로 정의하는 것에 대해 묻는 것은 실제로는별로 중요하지 않습니다. – holex