custom [super init] (создание подклассов)
Даны следующие занятия:
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:raw
метод категории на NSObject
который заполняет объект данными JSON. (см. https://github.com/uacaps/NSObject-ObjectMap)
Моя проблема: инициализация MCAchievementCenter
терпит неудачу, как это становится nil
,
Я делаю что-то неправильно? Любая помощь приветствуется.
Обновление: приложение входит в цикл>
1 ответ
Проверьте две вещи
[NSData dataWithContentsOfFile:ressourcePath] в MCModel равно нулю или нет.
[super initWithJSONData: raw] в созданной вами категории возвращает ноль или нет.
Может случиться, что ресурс недоступен по этому пути, а затем, когда вы вызываете super initWithJSONData, он тоже возвращает nil, поскольку необработанные данные равны nil.