【问题标题】:Objective C: Calling instance method from class methodObjective C:从类方法调用实例方法
【发布时间】:2016-03-23 18:21:38
【问题描述】:

这就是问题所在:

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时,不调用实例方法;有什么想法吗?

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

感谢您的帮助。

【问题讨论】:

  • alloc/init of objInstance 未完成。

标签: objective-c


【解决方案1】:

您尚未创建myObject 的实例。因此,假设 ARC,您正在调用 nil。调用nil 没有任何作用。

所以:

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

【讨论】:

    【解决方案2】:

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

    这是关于 Objective-C 的一个比较棘手的事情。如果您尝试这样的操作,Java 会抛出 NullPointerException。 Objective-C 默默地继续前进!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多