2010-01-05 12 views
5

Posso sapere come creare un'istanza dinamicamente di una classe in Objective-C?Come istanziare dinamicamente una classe in Objective-C

+5

risposta di Alex è corretta, ma per la evitando ogni dubbio, la tua domanda non è del tutto giusta. Non istanziare una classe. Si istanzia un oggetto * *. Un * oggetto * è un * istanza * di una * classe *. – Graza

+0

Ya sono d'accordo con te. Puoi dirmi come istanziare un oggetto di un'altra classe/modulo? – suse

risposta

11
MyClass *myClass = [[MyClass alloc] init]; 
OtherClass *otherClass = [[OtherClass alloc] init]; 
+0

Grazie per la risposta. Volevo anche sapere come istanziare un oggetto di un'altra classe/modulo? – suse

+0

Intendevo dichiarare che l'altra classe è un altro progetto e non il nome della classe ... Allora qual'è la sintassi? – suse

+1

Non capisco cosa intendi. Non so come creare un'istanza di un progetto. –

12

Su iPhone, se si desidera creare un'istanza di una classe dato il nome di classe è possibile utilizzare la funzione di runtime objc_lookUpClass.

Per esempio, se ho un BaseHandler classe di base e vuole creare un'istanza di un oggetto della sottoclasse destra in fase di esecuzione (hard coded come MyHandler in questo esempio):

#import <objc/objc.h> 
[...] 
NSString *handlerClassName = @"MyHandler" 
id handlerClass = objc_lookUpClass([handlerClassName 
      cStringUsingEncoding:[NSString defaultCStringEncoding]]); 
BaseHandler *handler = (BaseHandler *) [[handlerClass alloc] init]; 
Problemi correlati