if (image) {
MPMediaItemArtwork *media = [[[MPMediaItemArtwork alloc] init] initWithImage:image]; //crashed in this line,iOS9.
}
错误信息:
错误:258:CA_UISoundClientBase :: StartPlaying:AddRunningClient失败(状态= -66681)。 NSScanner:nil字符串参数
为什么MPMediaItemArtwork
在iOS9中崩溃?
答案 0 :(得分:1)
我还遇到了IOS9上的MPMediaItemArtwork初始化崩溃。
尝试将您的代码行更改为此代码:
MPMediaItemArtwork * media = [[MPMediaItemArtwork alloc] initWithImage:image];
很高兴知道它是否有助于任何人
答案 1 :(得分:0)
理论上,你原来的一行:
MPMediaItemArtwork *media = [[[MPMediaItemArtwork alloc] init] initWithImage:image]; //crashed in this line,iOS9.
应该有效。在Objective-C中从init断开alloc的主要原因是能够像你一样重新初始化一个(已经初始化的)对象。
因此,您可以向Apple报告错误,报告崩溃。从[[MPMediaItemArtwork alloc] init]
返回的对象应支持使用图像重新初始化。至少 - 重新初始化应该返回nil
(如果失败)。
然而 - 考虑到事物的状态,更简单,更传统,更有效的方法就是在alloc
之后立即初始化图像,就像这样:
MPMediaItemArtwork *media = [[MPMediaItemArtwork alloc] initWithImage:image];