目标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

在静态方法上调用InitdoStuffsFinal时,不调用实例方法;知道吗?

简而言之:我需要从同一类的静态方法调用实例方法。。。

谢谢你的帮助。

您还没有创建myObject的实例。所以,假设ARC,您调用的是nil。调用nil没有任何作用。

因此:

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

如果不初始化objInstance,它将为零,并且这些调用将不会执行任何操作。首先分配并初始化objInstance。您也可以在调用这些方法之前检查objInstance是否为nil,您会看到它为nil。

这是Objective-C的一个棘手之处。如果您尝试这样的操作,Java会抛出NullPointerException。Objective-C默默地前进着!

最新更新