Soy nuevo en XCode. Quiero saber cómo puedo saber que todas las clases se ajustan a cierto protocolo en XCode 4.3.1. ¿Y cómo puedo saber todas las subclases de una clase?¿Cómo obtengo la lista de todas las clases conforme a cierto protocolo en XCode 4?
Respuesta
Utilice Objective-C runtime functions.
objc_getClassList
para obtener la lista deClass
esclass_getSuperclass
o el método-superclass
a caminar por la cadena de superclaseclass_conformsToProtocol
o el método de-conformsToProtocol:
para comprobar si una clase es conforme a un protocolo
Protocol *protocol = @protocol(YourProtocol);
int numberOfClasses = objc_getClassList(NULL, 0);
Class *classList = malloc(numberOfClasses * sizeof(Class));
numberOfClasses = objc_getClassList(classList, numberOfClasses);
for (int idx = 0; idx < numberOfClasses; idx++)
{
Class class = classList[idx];
if (class_getClassMethod(class, @selector(conformsToProtocol:)) && [class conformsToProtocol:protocol])
{
NSLog(@"%@", NSStringFromClass(class));
}
}
free(classList);
Soy nuevo en la programación de ObjC, pero conozco bien a C. ¿Ve algún problema potencial al hacer Class classList [numberOfClasses]; en lugar de malloc + gratis? – Tommy
@Tommy Bueno, tienes razón, eso sería más rápido para asignar memoria en la pila –
y también menos cosas que pueden salir mal, que casi siempre es mejor. – Tommy
- 1. android dexclassloader obtener la lista de todas las clases
- 2. Cómo restablecer las advertencias en Xcode 4
- 3. Lista de archivos modificados en Xcode 4
- 4. Uso de la reflexión para obtener todas las clases de cierto tipo base en dll
- 5. Lista de todas las clases de dominio en Grails
- 6. ¿Cómo obtengo las clases de todas las columnas en un marco de datos?
- 7. Ejecutar todas las pruebas en Junit 4
- 8. XCode 4 Generando clases de entidades en CoreData
- 9. Cómo llamar a métodos anulado en todas las clases derivadas
- 10. Agregar zxing a XCode 4
- 11. Entrada a la consola en Xcode 4
- 12. xcode 4 lista de archivos con destino
- 13. Declarar un parámetro ObjC que una clase conforme a un protocolo de
- 14. ¿Conseguir que todas las filas consecutivas difieran en cierto valor?
- 15. ¿Cómo obtengo todas las fuentes de ancho fijo instaladas?
- 16. ¿Cómo eliminar totalmente Xcode 4
- 17. esquema de dispositivo duplicado en xcode 4
- 18. ¿Cómo puedo definir las macros de preprocesador en Xcode 4?
- 19. ¿Cómo obtengo una lista de todas las ventanas en mi escritorio gnome2 usando pygtk?
- 20. Mogenerator y Xcode 4
- 21. ¿Cómo obtengo y sincronizo una lista completa de todas las ventanas X11?
- 22. ¿Cómo instalar las plantillas de PROYECTO Cocos2d en Xcode 4?
- 23. Resharper- Encuentra todas las clases no utilizadas
- 24. Xcode 4 autocomplete buggy
- 25. Obtener todas las propiedades que marcaron cierto atributo
- 26. Importar todas las clases en el directorio?
- 27. ¿Cómo obtengo clases de NSString?
- 28. Obligando a Xcode 4 a compilar XIB en NIB
- 29. ¿Cómo obtengo todas las propiedades CSS compatibles en WebKit?
- 30. Establecer malloc_error_break en Xcode 4
fwiw, 'class_conformsToProtocol' es MUCHO más rápido que' -conformsToProtocol'. Esto es todo un cuello de botella en una gran aplicación con miles de clases. –