这就是问题所在:
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、doStuffs和Final时,不调用实例方法;知道吗?
简而言之:我需要从同一类的静态方法调用实例方法。。。
谢谢你的帮助。
您还没有创建myObject
的实例。所以,假设ARC,您调用的是nil
。调用nil
没有任何作用。
因此:
myObject *objInstance = [[myObject alloc] init];
如果不初始化objInstance,它将为零,并且这些调用将不会执行任何操作。首先分配并初始化objInstance。您也可以在调用这些方法之前检查objInstance是否为nil,您会看到它为nil。
这是Objective-C的一个棘手之处。如果您尝试这样的操作,Java会抛出NullPointerException。Objective-C默默地前进着!