Utilizzando il runtime Objective-C, come si aggiunge il metodo +layerClass
alla classe privata UIGroupTableViewCellBackground
(non alla sua superclasse, UIView
)? Nota: questo è solo per il test (per vedere come imposta la cella backgroundView
& selectedBackgroundView
).Come aggiungere dinamicamente un metodo di classe?
risposta
Per aggiungere dinamicamente un metodo di classe, anziché un metodo di istanza, utilizzare object_getClass(cls)
per ottenere la meta classe e quindi aggiungere il metodo alla meta classe. Es .:
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);
});
}
Si potrebbe anche essere in grado di fare questo più facile con l'aggiunta del metodo +layerClass
ad una categoria di UIGroupTableViewCellBackground
e l'utilizzo di una definizione di classe in avanti, vale a dire @class UIGroupTableViewCellBackground
, per farlo compilare.
Anche #include
Prova questa magia:
+ (void)load {
class_addMethod(objc_getMetaClass("UIGroupTableViewCellBackground"),
@selector(layerClass), (IMP)my_layerClass, "@:@"), nil);
});
}
Il ", nil)" non è corretto, è da un'affermazione. –
- 1. aggiungere metodo a una classe dinamicamente con decoratore
- 2. Come chiamare dinamicamente un metodo di classe in .NET?
- 3. Aggiungere dinamicamente le proprietà alla classe C#
- 4. Swift: Come aggiungere un metodo di classe in 'String 'estensione
- 5. Come posso definire dinamicamente un metodo alias per un metodo di classe?
- 6. Assegnare dinamicamente metodo/metodo come variabile
- 7. Wtforms, aggiungere dinamicamente una classe a un modulo
- 8. Come aggiungere l'attributo XmlInclude dinamicamente
- 9. In Rails, come aggiungere un nuovo metodo alla classe String?
- 10. Come aggiungere dinamicamente un div usando JQuery?
- 11. jVectorMap - Come aggiungere un indicatore dinamicamente
- 12. Aggiungere dinamicamente un servlet al servletConfig
- 13. Metodo per caricare dinamicamente file di classe java
- 14. Come posso chiamare dinamicamente un metodo su un oggetto dinamico?
- 15. Come posso aggiungere dinamicamente i valori di un oggetto JavaScript
- 16. Richiamare dinamicamente un metodo SOAP per nome?
- 17. Come aggiungere dinamicamente elementi all'array di stringhe?
- 18. Come modificare dinamicamente la classe di un Html.ActionLink in MVC
- 19. Can Groovy può aggiungere o sovrascrivere dinamicamente un metodo su un POJO?
- 20. Come aggiungere dinamicamente righe di tabella
- 21. come aggiungere dinamicamente ancoraggio/href in jQuery
- 22. Come posso aggiungere dinamicamente campi di input a un modulo?
- 23. Python - come posso rimuovere dinamicamente un metodo da una classe - cioè opposto di setattr
- 24. aggiungere dinamicamente TableRow a TableLayout
- 25. Come definire dinamicamente la classe che può essere utilizzata come parametro in un metodo?
- 26. Come creare oggetti di classe dinamicamente?
- 27. Come chiamare un metodo di una classe?
- 28. Come creare un metodo di classe privata?
- 29. dinamicamente aggiungendo metodi di classe ad una classe
- 30. Come chiamare dinamicamente un metodo di estensione generico?
state prendendo per te stesso? Q/A? risposta inviata da te stesso dopo 5 minuti? – samfisher
@samfisher: Questa è una cosa assolutamente legittima da fare: http://meta.stackexchange.com/q/2706/ Matt sta semplicemente aggiungendo al repository di informazioni. –
grazie @JoshCaswell per avermi illuminato su questo .. !! – samfisher