2016-03-23 8 views
0

это проблема:Objective C: Вызов метода экземпляра из метода класса

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 

При вызове Init , doTuffs a nd Окончательный на статическом методе, методы экземпляра не вызываются; Есть идеи?

Для краткости: нужно вызвать метод экземпляра из статического метода того же класса ...

Спасибо за помощь.

+1

alloc/init 'objInstance' не выполняется. – Larme

ответ

4

Вы не создали экземпляр myObject. Итак, предполагая ARC, вы звоните в nil. Вызов nil ничего не делает.

Итак:

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

Если вы не инициализировать objInstance, это будет ноль, и эти вызовы не будут делать ничего. Выделите и инициализируйте объект сначала. Вы также можете проверить objInstance для nil перед вызовом этих методов, и вы увидите, что оно равно нулю.

Это одна из самых сложных вещей об объективе-C. Java выкинет исключение NullPointerException, если вы попробуете что-то вроде этого. Цель-C тихо дергает!

Смежные вопросы