Sto cercando di ottenere un nome stringa di una classe dall'oggetto classe stesso.Classe Objective-C -> stringa come: [NSArray className] -> @ "NSArray"
// For instance
[NSArray className]; // @"NSArray"
ho trovato object_getClassName(id obj)
ma che richiede un'istanza essere passato ad esso, e nel mio caso, che è un lavoro inutile.
Quindi, come posso ottenere una stringa da un oggetto di classe e non un'istanza?
Grazie! Come è implementato 'NSStringFromClass'? È più performante memorizzare il nome della classe in una variabile 'static NSString'? – ma11hew28
@MattDiPasquale: tutti i nomi di classe sono memorizzati da qualche parte nel runtime Objective-C (le parti interne del runtime sono per lo più nascoste dall'applicazione ed esposte solo attraverso alcune funzioni API). Ogni oggetto di classe (ad esempio '[NSArray class]') è in realtà una 'struct'. 'Struct' contiene molte informazioni sulla classe, incluso il suo nome, i metodi che implementa, la superclasse, ecc.' NSStringFromClass' tira semplicemente il nome della classe da questo 'struct' e lo converte in un' NSString' . Non memorizzare il nome della classe in un 'NSString statico', non offrirà alcun vantaggio in termini di prestazioni. – dreamlax
@MattDiPasquale: 'NSClassFromString' funziona in modo leggermente diverso. Poiché tutti i nomi delle classi esistono da qualche parte nel runtime Objective-C, 'NSClassFromString' prende la stringa ed esplora l'elenco delle classi mantenute dal runtime alla ricerca della classe che ha il nome specificato. Se lo trova, lo restituisce, altrimenti restituisce 'Nil'. – dreamlax