이 질문에 대한 답변을 드리겠습니다. 너무 자주 나는 볼 수있다 사탄의 부은 스위치 성명. 대신 누군가가 함수 테이블을 사용하기를 원한다는 것을 알면 좋습니다.
일반적으로 XML로 인코딩 된 속성 목록 파일을 사용하는 것이 좋으면 매우 쉽습니다.
루트 요소가 일부 키에서 일부 선택자로 매핑되는 사전 인 속성 목록을 만드십시오.
Key Type Value
----------------------------------------------
Root Dictionary
firstKey String someSelector
secondKey String anotherSelector
로드는 NSDictionary
에 재산 목록의 내용 : 물론
id path = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"plist"];
id dict = [NSDictionary dictionaryWithContentsOfFile:path];
SEL selector = NSSelectorFromString([dict objectForKey:@"firstKey"]);
if ([someObject respondsToSelector:selector]) {
[someObject performSelector:selector];
}
, 당신은 적절한 방법으로이 논리를 리팩토링하려면, 아마도 인스턴스로 재산 목록을 캐시합니다 변하기 쉬운.
참고 : 필자는 개인적으로이 함수 테이블을 인라인으로 배치하는 것이 더 바람직하다고 생각합니다. 속성 목록은 멋지지만이 경우 매우 유용하다는 확신이 없습니다. 또한 Objective-C++을 사용하여 멋지다면 NSString
오브젝트 등의 셀렉터를 감싸거나 풀지 않고 도망 갈 수 있습니다.
심각하게 두 번 upvote 할 수 있으면 좋겠습니다. 일관된 질문과 초보자가 더 많이 묻는 질문. 건배. –