주어진 클래스의 서브 클래스가 런타임에 발견되는 방법이 있습니까?Obj-C에서 주어진 클래스의 서브 클래스를 발견하십시오
편집 : 대답에서 지금까지 나는 내가하고 싶은 것을 조금 더 명확히해야한다고 생각합니다. 나는 이것이 코코아에서 일반적인 관행이 아니며 약간의주의 사항이있을 수 있음을 알고 있습니다.
저는 동적 생성 패턴을 사용하여 파서를 작성하고 있습니다. 기본적으로 파서 인스턴스는 스택을 처리하고 특정 계산을 수행하는 방법을 알고있는 객체를 인스턴스화합니다.
MYCommand
클래스의 모든 하위 클래스를 가져올 수 있다면 예를 들어 사용 가능한 명령 목록을 사용자에게 제공 할 수 있습니다. 또한 5 장의 예제에서 파서에는 +, -, * 및 /와 같은 연산자를 사용할 수 있도록 대체 사전이 있습니다. (그들은 MYAddCommand
, 등등에 매핑됩니다.) 저에게는이 정보가 MyCommand
하위 클래스에 속한 것 같았습니다. 파서 인스턴스가 아닌 것은 동적 생성이라는 아이디어를 다소 상실했기 때문입니다.
이것은 실제로 갈 수있는 올바른 방법입니다. 특히 문서에서는 클래스의'+ load' 메소드가 모든 수퍼 클래스의'+ load' 메소드 후에 호출된다는 것을 언급하고 있기 때문에 특히 그렇습니다. 답변을 제공하는 다른 사람들에게 많은 감사를드립니다. –
MyCommand의 서브 클래스는 수퍼 클래스에서 + load를 호출하지 않습니다. + load는 그것을 구현하는 클래스에서만 호출됩니다. –
누군가가 나를 바로 잡는 데 오랜 시간이 걸렸습니다. 나는 일반적으로 자동 등록이 나쁜 생각이고 대신에 좀 더 수동으로 처리해야한다는 답변에 동의한다. –