【问题标题】:Memory leaks when using ALAssetsLibrary使用 ALAssetsLibrary 时的内存泄漏
【发布时间】:2011-05-26 07:24:04
【问题描述】:

我正在使用面向 iOS 4.1 或更高版本的 SDK 4.1 开发 iPhone 应用程序。
Instruments 报告以下代码的内存泄漏。

void (^resultBlock)(ALAsset *) = ^(ALAsset *asset) {
    NSLog(@"resultBlock");
};
void (^failureBlock)(NSError *) = ^(NSError *error) {
    NSLog(@"error");
};
NSURL *url = [NSURL URLWithString:@"assets-library://asset/asset.JPG?id=1000000176&ext=JPG"];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:url resultBlock:resultBlock failureBlock:failureBlock];
[library release];

我只是将此代码放在我的 TestApp 的 viewDidLoad 中进行测试。(我在实际项目中使用 UIImagePicker。)
当我使用 Instrument(leak) 运行 TestApp 时,它会在启动后大约 10 秒报告内存泄漏。

谁能告诉我这段代码有什么问题或者我应该做些什么吗?
谢谢。

【问题讨论】:

  • 我遇到了同样的问题,我正在尝试自己追踪它。你找到解决办法了吗?
  • 发生“启动后 10 秒”时间,因为默认情况下 Instruments 每 10 秒拍摄一次快照。您可以在泄漏 - 快照 - 快照间隔(秒)中更改此时间。您还可以随时在同一位置手动拍摄快照。

标签: iphone objective-c memory-leaks


【解决方案1】:

您提供的代码中的内存管理没有任何问题。如果有泄漏,它在 Apple 的框架或代码的其他部分中。只需确保您在设备上进行测试 - 某些框架在设备上的“抛光”程度更高。

【讨论】:

  • 感谢您的回复。我还没有找到任何解决方案。但是似乎内存泄漏只发生一次,除了泄漏之外没有任何不良影响,所以我忽略了这个问题。 Apple 并没有因为这个问题拒绝我的应用程序。
猜你喜欢
  • 2021-07-06
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
相关资源
最近更新 更多