目标C:从类方法调用实例方法

时间:2016-03-23 18:21:38

标签: 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 doStuffs Final 时,不调用实例方法;任何想法?

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您尚未创建myObject的实例。所以,假设ARC,你正在呼叫nil。致电nil没有做任何事情。

所以:

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

答案 1 :(得分:1)

如果你没有初始化objInstance,那么它将是零并且这些调用不会做任何事情。首先分配并初始化objInstance。你也可以在调用那些方法之前检查objInstance为nil,你会发现它是零。

这是关于Objective-C的棘手问题之一。如果您尝试过类似的东西,Java会抛出NullPointerException。 Objective-C默默地继续前进!