2016-03-23 13 views
0

das ist das Problem:Objective C: Aufruf Instanzmethode von Klassenmethode

myObject.h

@interface myObject 
- (void) Init; 
- (void) doStuffs; 
- (void) Final; 
+ (NSData*) staticMethod: (NSString*) filePath 
@end 

myObject.m

@implementation myObject 

- (void) Init { 
... 
} 

- (void) doStuffs { 
... 
} 

- (void) Final { 
... 
} 

+ (NSData*) staticMethod: (NSString*) filePath { 
    myObject *objInstance; 

    [objInstance Init]; 
    [objInstance doStuffs]; 
    [objInstance Final]; 
} 
@end 

Wenn Init Aufruf , doStuffs a nd Endgültige auf die statische Methode, die Instanz Methoden werden nicht aufgerufen; irgendeine Idee?

kurz: Ich brauche Instanz-Methode aus einer statischen Methode der gleichen Klasse zu nennen ...

Dank für Ihre Hilfe danken.

+1

alloc/init von 'objInstance' ist nicht erledigt. – Larme

Antwort

4

Sie haben keine Instanz myObject erstellt. Unter der Annahme von ARC rufen Sie also nil an. Aufruf an nil macht nichts.

So:

myObject *objInstance = [[myObject alloc] init]; 
1

Wenn Sie objInstance nicht initialisiert werden, wird es gleich Null sein und diese Anrufe werden nichts tun. Zuordnen und initialisieren Sie objInstance zuerst. Sie können auch objInstance für nil überprüfen, bevor Sie diese Methoden aufrufen, und Sie werden sehen, dass es null ist.

Dies ist eines der schwierigsten Dinge über Objective-C. Java würde eine NullPointerException auslösen, wenn Sie so etwas versucht haben. Objective-C tummelt sich ruhig weiter!

Verwandte Themen