Форум программистов, компьютерный форум, киберфорум
Наши страницы

NSData как освободить память - Objective-C

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Objective-C IDE для ObjC http://www.cyberforum.ru/objective-c/thread648308.html
Всем привет. Я являюсь владельцем windows. Хотел начать изучать ObjC. Для начала хотел узнать где скачать хороший Hacintosh и сам XCode... Прошу поделиться ссылками ибо раньше с программами от apple...
Objective-C Посоветуйте JSON framework ребята, посоветуйте пожалуйста хороший JSON framework? видел json-framework, touch json, yajl, но хочется узнать ваше мнение и чем сами пользуетесь p.s. iOS < 5, так что нативный... http://www.cyberforum.ru/objective-c/thread648263.html
Двухмерные массивы. Создание,изменение,хранение Objective-C
Доброго времени суток! Сразу извиняюсь если задам глупые вопросы. Пытаюсь разобраться с ООП. Передо мной стоит следующая задача Необходимо создать двухмерный числовой массив для последующий работы с...
Objective-C dealloc
Добрый день! У меня такой вопрос. В документации написано, что в методе dealloc нужно освобождать все объекты, которые входят в класс. Но по исходникам я заметил, что некоторые объекты не...
Objective-C Outlet, @property http://www.cyberforum.ru/objective-c/thread645697.html
Добрый день, встал вопрос: почему при декларации оутлета добавляется только @property: @interface MainViewController : UIViewController @property (retain, nonatomic) IBOutlet UILabel *labelState;...
Objective-C XML в таблицу Добрый вечер! Нужно вывести данные с сервера в список. Смотрю статьи и примеры, там в основном парсят rss файлы. А как пропаристь такие данные? http://bash.zennexgroup.com/service/ru/get.php?type=last подробнее

Показать сообщение отдельно
Ravenenok
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 37

NSData как освободить память - Objective-C

08.09.2012, 14:01. Просмотров 966. Ответов 4
Метки (Все метки)

Кусок моей программы читает список файлов в папке и вычисляет хэш для каждого файла. Каждый файл помещается в NSData, что приводит к увеличению используемой памяти ровно на размер файлов, т.е. если у меня в папке будет 1Гб файлов, то память, требуемая программе тоже увеличится на 1Гб, release и dealloc не работают, т.к. включен ARC, есть варианты как это побороть?



C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#import "MD5.h"
...
 
NSFileManager * fileMan = [[NSFileManager alloc] init];
NSArray * files = [fileMan subpathsOfDirectoryAtPath:fullPath error:nil];
 
if (files) 
{
  for(int index=0;index<files.count;index++) 
  {
    NSString * file = [files objectAtIndex:index];
    NSString * fullFileName = [fullPath stringByAppendingString:file];
    if( [[file pathExtension] compare: @"JPG"] == NSOrderedSame )
    {
      NSData * nsData = [NSData dataWithContentsOfFile:fullFileName];
      if (nsData)
      {
        [names addObject:[NSString stringWithString:[nsData MD5]]];
         NSLog(@"%@", [nsData MD5]);       
      }
    }
  }
}
И сам файл MD5.m

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#import <CommonCrypto/CommonDigest.h>
 
@implementation NSData(MD5)
 
- (NSString*)MD5
{
    // Create byte array of unsigned chars
  unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH];
 
    // Create 16 byte MD5 hash value, store in buffer
    CC_MD5(self.bytes, (uint)self.length, md5Buffer);
 
    // Convert unsigned char buffer to NSString of hex values
  NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
  for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) 
        [output appendFormat:@"%02x",md5Buffer[i]];
 
  return output;
}
 
@end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.