【问题标题】:Object-c memory alloc IOS 7对象-c 内存分配 IOS 7
【发布时间】:2015-02-03 10:55:36
【问题描述】:

我在循环“for”中使用 RNDecryptor (+) 时遇到内存已满的问题,我将此方法称为 es:

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

RNDecryptor 分配内存,但调用不为空,迟早没有更多可用内存和 CRASH ...它可能在调用之间使用 dealloc +[RNDecryptor...] 作为解决方案??

谢谢。

【问题讨论】:

  • 问题可能是您试图解密内存中的太多数据。您如何处理从该方法获得的NSData
  • then : [datacrypto writeToFile:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), fileName] atomically:YES]; ...
  • 我已经解决了:@autoreleasepool { // 创建自动释放对象的代码。 } 再见。
  • @Marino ...您大概知道为什么可以解决问题?或者,无论您已经知道解决方法,答案是否仍然有用?
  • @Tommy 问题已解决。

标签: ios objective-c memory memory-leaks alloc


【解决方案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 模式。

【讨论】:

  • 好的,不,不(正确)decryptData 它不是单例!
  • 我已经解决了:@autoreleasepool { // 创建自动释放对象的代码。 } 再见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 2015-10-15
  • 2014-03-17
  • 2012-02-21
  • 2018-06-15
  • 2013-01-21
相关资源
最近更新 更多