这就是问题:
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 时,不调用实例方法;任何想法?
简而言之:我需要从同一个类的静态方法中调用实例方法......
感谢您的帮助。
答案 0 :(得分:4)
您尚未创建myObject
的实例。所以,假设ARC,你正在呼叫nil
。致电nil
没有做任何事情。
所以:
myObject *objInstance = [[myObject alloc] init];
答案 1 :(得分:1)
如果你没有初始化objInstance,那么它将是零并且这些调用不会做任何事情。首先分配并初始化objInstance。你也可以在调用那些方法之前检查objInstance为nil,你会发现它是零。
这是关于Objective-C的棘手问题之一。如果您尝试过类似的东西,Java会抛出NullPointerException。 Objective-C默默地继续前进!