Похоже, вы обращаетесь к [количествам категорий] и [категориям objectAtIndex: j] еще до того, как вы выделяете / инициализируете категории.
Перечитав название («повторная инициализация»), которое предполагает, что вы ранее проинициализировали категории, я теперь предполагаю, что у вас есть основной набор категорий, которые вы пытаетесь свести к фактически приобретенным категориям. Если это так, я бы не стал повторно использовать переменную «категории», поскольку это сбивает с толку. (Я предполагаю, что категории были автоматически выпущены, или у вас есть утечка). Как насчет использования unremovableArray вместо его утечки?
Я бы также использовал быстрые счетчики для ясности и скорости ...
NSLog(@"categories: %@", categories);
inAppKeys = [[MKStoreManager sharedManager] purchasableObjectsDescription ];
NSLog(@"inAppKeys:%@", inAppKeys);
NSMutableArray * unremovableCategories = [[NSMutableArray alloc] init];
for(NSString* thisAppKey in inAppKeys) {
for (NSDictionary* thisCategory in categories) {
if ([[thisCategory valueForKey:@"inAppKey"] isEqualToString: thisAppKey]){
[unremovableCategories addObject:thisCategory];
break; //having added this category; no reason to continue looking at it
}
}
}
//now use unremovableCategories...