• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - MPMediaItemPropertyArtwork 导致崩溃(奇怪的问题)

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:18:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

运行“额外循环”之前的分配 allocations before running 'crashing' loop

代码:

// loading items to the array, there are no memory warnings after this is completed. The first allocations screenshot is after this code and before extra loop code.
NSMutableArray *albumCovers = [[NSMutableArray alloc] init];
for (MPMediaQuery *query in queries) {
    NSArray *allCollections = [query collections];
    for (MPMediaItemCollection *collection in allCollections) {
        MPMediaItemArtwork *value = [collection.representativeItem valueForProperty:MPMediaItemPropertyArtwork];
                UIImage *image = [value imageWithSize:CGSizeMake(100, 100)];
                if (image) {
                    [albumCovers addObject:image];
                }
            }
        }
    }
    _mediaCollections = [NSArray arrayWithArray:artworkedCollections];
    _albumCovers = [NSArray arrayWithArray:albumCovers];
}

还有其他地方:

// !!!!! extra loop - from here the memory starts to grow and never release
for (i=0; i< 800; i++) {
    UIImage * coverImage = [_albumCovers objectAtIndex:indexPath.row];
    [veryTemp setImage:coverImage]; // exactly this line adds to the memory. with this line commented, there is no problem.
}

运行“额外循环”后的分配 allocations before running 'crashing' loop

澄清一下,在 only-obj-c 开启和系统库关闭的情况下调用堆栈(如果我打开它们,每个最重方法的最高 % 为 0.9%) call stack after extra loop

我做了一些研究,发现在 stackoverflow ,这些 VM:ImageIO_PNG_Data 通常来自 [UIImage imageNamed:],但是如您所见,我不使用此方法,我只是获取引用来自 MPMediaItemCollection



Best Answer-推荐答案


问题是 UIImage 通常只保留一个 ref(CGImageRef),它很小。显示项目后,CGImageRef 被“注入(inject)”了信息。结果,这张 table 一直在增长。

简单但不是最漂亮的解决方案是使用代码:

NSArray = @[obj1, obj2, obj3]; // where obj is custom NSObject and has a UIImage property

代替:

NSArray = @[img1, img2, img3]; // where img is of UIImage type

关于ios - MPMediaItemPropertyArtwork 导致崩溃(奇怪的问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19182495/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap