Что cuases мою утечку памяти здесь:утечка памяти IOS
У меня есть глобальная переменная:
@property (nonatomic, strong) NSArray *productArray;
У меня есть выполнение функции, которые запрашивают данные из основных данных:
- (NSArray *)fetchallProductWithTag:(NSString *)tag
{
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"tags.name contains [cd] %@", tag];
NSSet *itemsSet = [self.managedObjectContext
fetchObjectsForEntityName:TABLE_NAME_PRODUCT
withPredicate:predicate
columns:nil unique:NO];
return itemsSet.allObjects;
}
Вот является реализация fetchObjectsForEntityName: withPredicate: columns: из категории:
- (NSSet *)fetchObjectsForEntityName:(NSString *)entityName
withPredicate:(NSPredicate *)predicate
columns:(NSArray *)columns
unique:(BOOL)unique
{
NSEntityDescription *entity = [NSEntityDescription
entityForName:entityName inManagedObjectContext:self];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
[request setEntity:entity];
[request setPredicate:predicate];
[request setReturnsDistinctResults:unique];
if(columns.count > 0)
[request setPropertiesToFetch:columns];
if(columns.count > 0 || unique)
[request setResultType:NSDictionaryResultType];
NSError *error = nil;
NSArray *results = [self executeFetchRequest:request error:&error];
if (error != nil)
{
[NSException raise:NSGenericException
format:@"Error fetching in %@; error:%@",
entityName, error.localizedDescription];
}
if(results.count > 0)
{
return [NSSet setWithArray:results];
}
return nil;
}
На мой взгляд контроллер У меня есть эта функция вызова:
self.productArray = [myClass fetchAllProductWithTag:@"All"];
Тогда где-то в ViewController код класса сбросить значение productArray:
self.productArray = [myClass fetchAllProductWithTag:@"Favorites"];
Тогда утечка происходит.
ARC или нет ARC? –
И откуда вы знаете, что есть утечка? –
Я использую ARC. xcode 5 – Hokage