2015-02-03 8 views
0

난이 방법 말이지 전화 "를"나는 사이클 RNDecryptor 전체 메모리 (+)에 문제가 :객체 C 메모리 ALLOC의 IOS 7

for (int i=0; i < [datasource fileCount]; i++) { 
    ... 
    datacrypto = [RNDecryptor decryptData:datacrypto withSettings:kRNCryptorAES256Settings password:passcode error:nil]; 
    .... 
} 

RNDecryptor가 메모리를 할당하지만 전화가 비어하지를 그리고 조만간 더 이상의 사용 가능한 메모리와 크래시가 없습니다 ... 가능한 dealloc + [RNDecriptor ...] 사이의 호출 또는 다른 해결책으로 ??

감사합니다.

+0

아마도 메모리의 너무 많은 데이터를 해독하려고하는 것이 문제 일 수 있습니다. 그 메소드에서 얻은 NSData를 어떻게 처리합니까? – orkoden

+0

그렇다면 : [datacrypto writeToFile : [NSString stringWithFormat : @ "% @ % @", NSTemporaryDirectory(), fileName] atomically : YES]; ... – Marino

+1

나는 다음과 같이 해결했습니다. @autoreleasepool { // 자동 반복 된 개체를 생성하는 코드. } bye. – Marino

답변

-1

다음은이 메소드의 구현 방법입니다.

+ (NSData *)decryptData:(NSData *)theCipherText withSettings:(RNCryptorSettings)settings password:(NSString *)aPassword error:(NSError **)anError 
{ 
    RNDecryptor *cryptor = [[self alloc] initWithPassword:aPassword 
              handler:^(RNCryptor *c, NSData *d) {}]; 
    cryptor.settings = settings; 
    return [self synchronousResultForCryptor:cryptor data:theCipherText error:anError]; 
} 

싱글 톤이 아니거나 다른 분기가 있습니까? 그렇지 않은 경우 자신의 singleton 패턴을 더 잘 구현하십시오.

+0

좋아, 아니 (맞지) decryptData 그것은 싱글 톤 아니에요! – Marino

+1

나는 다음과 같이 해결했습니다 : @autoreleasepool { // 자동 회수 된 개체를 생성하는 코드. } bye. – Marino