MPMediaItemArtwork在iOS9中崩溃

时间:2015-08-28 04:54:38

标签: ios ios9

if (image) {
    MPMediaItemArtwork *media = [[[MPMediaItemArtwork alloc] init] initWithImage:image];  //crashed in this line,iOS9.
}

错误信息:

  

错误:258:CA_UISoundClientBase :: StartPlaying:AddRunningClient失败(状态= -66681)。   NSScanner:nil字符串参数

为什么MPMediaItemArtwork在iOS9中崩溃?

2 个答案:

答案 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];