- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
运行“额外循环”之前的分配
代码:
// 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.
}
运行“额外循环”后的分配
并澄清一下,在 only-obj-c 打开和系统库关闭的情况下调用堆栈(如果我打开它们,每个最重的方法的最高百分比是 0.9%)
我做了一些研究,并在 stackoverflow 找到了,这些 VM:ImageIO_PNG_Data
通常来自 [UIImage imageNamed:]
,但是如您所见,我不使用此方法,我只是获取引用来自 MPMediaItemCollection
。
最佳答案
问题是 UIImage 通常只保留一个 ref(CGImageRef),它很小。显示项目后,CGImageRef 被“注入(inject)”了信息。结果,该表一直在增长。
简单但不是最漂亮的解决方案是使用代码:
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/
我正在使用 AVPlayer 播放来自服务器的音乐流。我有一个艺术作品图像,我想在命令中心和锁定屏幕上显示。我正在使用以下代码: let image = UIImage(named: "Rad
运行“额外循环”之前的分配 代码: // loading items to the array, there are no memory warnings after this is complete
我有以下代码从 MPMediaItemPropertyArtWork 获取 UIImage 以在我的 View 中显示 coverArt。我从 mediaItem 中获得非 NULL 艺术品,但是,当
我想在 iOS 锁屏中设置图像,但文档从未提及图稿的大小。应该设置成什么? 最佳答案 在苹果论坛上,人们推荐 600x600 或更高的图像, 我发现低于此值的内容看起来很模糊。 https://dis
所以我想显示来自 URL 的图像。 我知道我首先需要将其编码为友好的 URL - .addingPercentEncoding(withAllowedCharacters: .urlQueryAllo
在使用 iOS 8.4 播放 Apple Music 中的歌曲时,我无法检索 MPMediaItemPropertyArtwork 我尝试读取 nowPlayingItem 的图像 (lldb) po
此代码工作正常: func setInfoCenterCredentials(_ artist: String, _ title: String, _ image: UIImage) { le
我是一名优秀的程序员,十分优秀!