나는 조건부 코드를 피하려고 시간을 낭비하는 것을 너무 많이 생각하고 있습니다. 그래서 물어볼 것이라고 생각했습니다. 나는 이런 종류의 질문을 보았지만 PHP 나 다른 언어를 사용하고 있었다. 나는 이런 식으로 뭔가를 할 수있는 가장 기본적인에서변수에 저장된 클래스 이름을 사용하여 클래스 메서드를 호출합니까?
, (I 구문이 잘못 알고) :
Class * var = @"Playback_Up";
// call Class method to get default settings
NSMutableDictionary * dict = [var getPlaybackDefaults];
가 왜이 작업을 수행 할 수 있습니까? 조건부를 피하려면. 나는 재생 "유형"의 범위에서 사용할 수있는 애플 리케이션을 가지고있다 - 각 유형은 "재생"클래스의 서브 클래스에 의해 처리된다. 클래스 이름을 배열에 저장 한 다음 선택한 (tableView에서) 선택하면 해당 클래스를 호출하고 인스턴스를 만듭니다.
이것이 가능한가, 아니면 스스로 파고들 것인가? 여기에 구멍이 있니?
Class var = NSClassFromString(@"Playback_Up");
나머지는 괜찮습니다, 나는 더 자주 당신이 상상할 수있는 것보다 기술의이 종류를 사용
또는'[Playback_Up class]'는 어떨까요? –
네, 괜찮습니다. (이름이 하드 코딩 된 경우 더 좋습니다.) 'NSClassFromString'은 변수 문자열을 처리 할 수있게 해줍니다. 다른 곳에서 읽는다면 좋을 것입니다. –
@skinnyTOD 약간의 추가 작업'NSStringFromClass ([MyClass class]);를 수행하는 반대 방향으로 가고 있다면 클래스의 이름을 바꾸면 Xcode가 실제로 리펙토링 할 수 있습니다. –