Usando Objective-C Runtime, ¿cómo agrego el método +layerClass
a la clase privada UIGroupTableViewCellBackground
(no a su superclase, UIView
)? Nota: Esto es solo para pruebas (para ver cómo establece la celda backgroundView
& selectedBackgroundView
).¿Cómo agregar dinámicamente un método de clase?
Respuesta
Para agregar dinámicamente un método de clase, en lugar de un método de instancia, use object_getClass(cls)
para obtener la metaclase y luego agregue el método a la metaclase. Ej .:
UIKIT_STATIC_INLINE Class my_layerClass(id self, SEL _cmd) {
return [MyLayer class];
}
+ (void)initialize {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Class class = object_getClass(NSClassFromString(@"UIGroupTableViewCellBackground"));
NSAssert(class_addMethod(class, @selector(layerClass), (IMP)my_layerClass, "@:@"), nil);
});
}
También podría ser capaz de hacer esto más fácil añadiendo el método +layerClass
a una categoría de UIGroupTableViewCellBackground
y el uso de una definición de clase hacia adelante, es decir @class UIGroupTableViewCellBackground
, para que se compile.
También #include
probar este mágico:
+ (void)load {
class_addMethod(objc_getMetaClass("UIGroupTableViewCellBackground"),
@selector(layerClass), (IMP)my_layerClass, "@:@"), nil);
});
}
El ", nil)" es incorrecto, es de una aserción. –
- 1. Cómo agregar métodos dinámicamente
- 2. ¿Cómo agregar dinámicamente un attr_reader
- 3. ¿Cómo invoco dinámicamente un método de clase en PHP?
- 4. invocar dinámicamente un método de clase en Objective C
- 5. ¿Cómo agregar un método a una clase existente en PHP?
- 6. Objetivo C - ¿Cómo agregar un método a una clase existente?
- 7. Cómo agregar atributos XmlInclude dinámicamente
- 8. Agregar dinámicamente miembros a un objeto dinámico
- 9. Agregar un método a una clase de dominio
- 10. ¿Cómo defino dinámicamente un método como privado?
- 11. agregue el método a una clase dinámicamente con el decorador
- 12. ¿Puede Groovy agregar o anular dinámicamente un método en un POJO?
- 13. Cómo alterar dinámicamente la clase de un Html.ActionLink en MVC
- 14. cómo agregar dinámicamente anclaje/href en jQuery
- 15. Cómo agregar dinámicamente un estilo para text-align usando jQuery
- 16. Creando una clase dinámicamente
- 17. Agregar un método de la conciencia a la clase existente (Excepción de elenco de clase)
- 18. asp.net dinámicamente agregar GridViewRow
- 19. Decorar un método que ya es un método de clase?
- 20. ¿Cómo puedo agregar dinámicamente campos de entrada a un formulario?
- 21. Cómo agregar dinámicamente un convertidor de código subyacente
- 22. Cómo invoco dinámicamente el método de un objeto de JavaScript
- 23. agregar dinámicamente TableRow a TableLayout
- 24. Extracción/undefining un método de clase
- 25. ZooKeeper: ¿agregar compañeros dinámicamente?
- 26. ¿Cómo crear un método de clase privado?
- 27. JQuery validar dinámicamente agregar reglas
- 28. ¿Cómo crear objetos de clase dinámicamente?
- 29. Agregar componentes de Primefaces dinámicamente
- 30. Forma maravillosa de invocar dinámicamente un método estático
está tomando para sí mismo? Q/A? respuesta publicada por ti mismo después de 5 minutos? – samfisher
@samfisher: Esto es algo perfectamente legítimo: http://meta.stackexchange.com/q/2706/ Matt simplemente está agregando al repositorio de información. –
gracias @JoshCaswell por iluminarme en esto .. !! – samfisher