自定义[超级初始化](子类)

时间:2014-05-17 13:19:39

标签: ios objective-c oop subclass

鉴于以下类别:

MCAchievementCenter:MCModel (子类)

-(id) initWithDelgate:(id<MCAchievementNotifications>)delegate {

    self = [super initWithRessource:@"achievements"];
    if (self)
    {
        self.delegate = delegate;
    }

    return self;
}

MCModel (超类)

-(instancetype)initWithRessource:(NSString *)ressource {

    NSString* ressourcePath = [[NSBundle mainBundle] pathForResource:ressource
                                                              ofType:@"json"];
    NSData* raw = [NSData dataWithContentsOfFile:ressourcePath];
    return [super initWithJSONData:raw];
}

注意-initWithJSONData:rawNSObject上使用json数据填充对象的类别方法。 (见https://github.com/uacaps/NSObject-ObjectMap

我的问题MCAchievementCenter的初始化失败,因为它变为nil

我做错了吗? 任何帮助表示赞赏。

更新:app进入循环&gt;

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

检查两件事

  1. MCModel 中的[NSData dataWithContentsOfFile:ressourcePath]是否为零。

  2. 您创建的类别中的[super initWithJSONData:raw]将返回nil。

  3. 可能会发生资源在该路径上不可用,然后当您调用超级initWithJSONData时,由于 raw 数据为nil,因此也返回nil。