그래서 클래스가 MyClass
입니다. 그것의 이름은 char * myclasses[]
의 일부입니다. objc 런타임 API를 사용하여 할당하고 싶습니다.
1) 이것을 수행하는 가장 좋은 방법입니까? 내 목표는 실제로 사용할 필요가있을 때까지 10 또는 15 개의 ViewController를 할당하지 않는 것입니다. 또한이를 작성하기 위해 거대한 switch 문을 사용하지 않아야합니다.Objective-C 클래스를 등록하는 중 런타임 참조
Class aClass = NSClassFromString ([NSString stringWithUTF8String:myclasses[1]]);
id myClass = class_createInstance(aClass, 0);
나는 또한 클래스를 등록 이해하려고 노력 중이 야 ..
2) 런타임에 새로운 클래스 (단지) 할당을 만드는 아니에요 때문에, 나는 그것을 등록 할 필요가 없습니다, 옳은?
3) 클래스 등록은 일반적으로 어떻게 작동합니까? (어딘가에 문서로 나를 가리 키도록).
이 더 나는 돈을 읽기 당신이 성취하려는 것을 이해하지 못합니다. '[[ alloc] init]'을 호출 할 때까지 객체 인스턴스를 할당 할 필요가 없습니다. 클래스의 인스턴스를 할당해야 할 때까지 클래스를로드하고 싶지 않다는 것을 의미하는 경우 - 까다로울 수 있습니다. 어쨌든 코드에서 심볼릭 링크를 상징적으로 참조하는 것을 피할 필요가 있습니다. 그러면 iOS에서 앱의 모든 클래스를로드하지 않아도된다고 생각하지 않습니다. (iOS는 동적 코드 로딩을 허용하지 않습니다.) –
nielsbot
@nielsbot 새로운 컨트롤러가 컨트롤러 클래스 이름에 의해 C 문자열로 추가되는 단일 장소를 디자인하고, 사용 가능한 컨트롤러를 알 수 있습니다 (배열). 그런 다음 나중에 그 중 하나의 인스턴스를 만들 수 있습니다 (아래에서 해결되었습니다). – estobbart
그런 경우에는 앱의 plist에서 클래스 이름 목록을 유지하는 것과 같은 작업을 할 수도 있습니다 ... 그냥 생각합니다 – nielsbot