2
Objective-c運行時可以獲取UIView類的所有子類的數組嗎?在Objective-c運行庫中獲取UIView的所有子類Objective-c
Objective-c運行時可以獲取UIView類的所有子類的數組嗎?在Objective-c運行庫中獲取UIView的所有子類Objective-c
下面是打印所有UIView子類名稱的代碼:(如何獲得運行時可用的所有類的列表,可以找到here)。還要注意,這段代碼將只打印UIView
子類,如果你想進一步深入層次結構,你可能需要用所需的超類作爲參數遞歸調用列出的代碼。
Class * classes = NULL;
int numClasses = objc_getClassList(NULL, 0);
if (numClasses > 0)
{
classes = malloc(sizeof(Class) * numClasses);
numClasses = objc_getClassList(classes, numClasses);
for (int i = 0; i < numClasses; ++i){
if (class_getSuperclass(classes[i]) == [UIView class]){
NSLog(@"%@", NSStringFromClass(classes[i]));
}
}
free(classes);
}
這會給你唯一的直接子類... – Yuji
是的,但得到整個層次可以留作(容易)excercize ... – Vladimir
@Yuji:您可以使用遞歸來查找所有的子類,它看起來像找到1個文件夾的所有子文件夾 – VietHung