objc_getClassList를 호에서 사용할 수있는 사람이 있습니까?호에서 objc_getClassList 사용
근본적인 문제는 매개 변수 중 하나가 클래스 포인터의 C 배열이라는 것입니다.
objc_getClassList를 호에서 사용할 수있는 사람이 있습니까?호에서 objc_getClassList 사용
근본적인 문제는 매개 변수 중 하나가 클래스 포인터의 C 배열이라는 것입니다.
이 코드는 ARC에서 작동해야합니다
int numClasses;
Class *classes = NULL;
classes = NULL;
numClasses = objc_getClassList(NULL, 0);
NSLog(@"Number of classes: %d", numClasses);
if (numClasses > 0)
{
classes = (__unsafe_unretained Class *)malloc(sizeof(Class) * numClasses);
numClasses = objc_getClassList(classes, numClasses);
for (int i = 0; i < numClasses; i++) {
NSLog(@"Class name: %s", class_getName(classes[i]));
}
free(classes);
}
참고로,이 코드를 실행하는 컨텍스트 외부에서 클래스 개체 중 하나를 사용하려는 경우 (예 :이 코드를 사용하는 함수에서 반환 한 것처럼) __unsafe_unretained 클래스에서 ARC 메모리 관리 클래스를 가져올 수 있습니다 NSClassFromString (NSStringFromClass (classes [i]))을 수행하여. 클래스 복사본을 얻는보다 효율적인 방법이 있는지 확신 할 수 없지만 그 방법은 저에게 효과적입니다. 직접 클래스 [i]를 반환하면 객체가 무료 (클래스) 호출에서 해제되므로 매달리는 포인터로 끝납니다. – stuckj
좋은 질문을. ARC는 이와 같은 상황에서 상당히 어색한 것으로 보입니다. 나는 주위에 춤추는 방법을 알아내는 시간을 보내기보다는 문제의 파일에 대해 그것을 사용하지 못하게했지만 ARC가 활성화 된 상태에서이 작업을 수행하는 비교적 간단한 방법이 있는지 궁금 할 것입니다. – jlehr