在 iOS 中使用 MPMediaItem 时是不是需要使用 mutableCopy 到 NSMutableArray?

Posted

技术标签:

【中文标题】在 iOS 中使用 MPMediaItem 时是不是需要使用 mutableCopy 到 NSMutableArray?【英文标题】:Do i need to use mutableCopy to NSMutableArray when using MPMediaItem in iOS?在 iOS 中使用 MPMediaItem 时是否需要使用 mutableCopy 到 NSMutableArray? 【发布时间】:2013-01-23 17:15:38 【问题描述】:

大家好,请指导我一些事情。

我正在使用iPodMusicPlayer 制作自定义音乐应用程序。

这是我从 iPodLibrary 加载歌曲的一些代码。

MPMediaQuery *query = [MPMediaQuery playlistsQuery];

        MPMediaPropertyPredicate *filter = [MPMediaPropertyPredicate predicateWithValue:self.playlistName forProperty:MPMediaPlaylistPropertyName comparisonType:MPMediaPredicateComparisonContains];

        [query addFilterPredicate:filter];      

**self.app.arrayFromAppDelegate = (NSMutableArray *)[query items];**


        self.userMediaItemCollection = [[MPMediaItemCollection alloc] initWithItems:self.app.arrayFromAppDelegate];

        [self.player setQueueWithItemCollection:self.userMediaItemCollection];

根据上面的代码

self.app.arrayFromAppDelegate = (NSMutableArray *)[query items];

arrayFromAppDelegate 是我在AppDelegate 中声明的NSMutableArray[query items]; 返回 NSArray 我用指针添加到 NSMutableArray(NSMutableArray *)

当我这样使用的时候是正确的方式吗?

或者我应该像self.app.arrayFromAppDelegate = [[query items] mutableCopy];这样使用

哪种方式最适合记忆,使用mutableCopy后是否需要使用removeAllObject

请指导我。

抱歉我的英语不好。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

如果您要从 NSArray 转到 NSMutableArray,不要只转换它,而是使用可变副本。

【讨论】:

使用后需要removeAllObject吗? 如果您指的是何时发布它(我使用 arc),您不应该这样做。 是的,我使用了 ARC。所以我不需要使用 removeAllObject? 是的,当你的可变数组被释放时,它会释放数组中的所有对象。现在这是从记忆的角度来看。

以上是关于在 iOS 中使用 MPMediaItem 时是不是需要使用 mutableCopy 到 NSMutableArray?的主要内容,如果未能解决你的问题,请参考以下文章

从 MPMediaItem 播放电影 (iPad/IOS5)

错误:iOS 和 MPMediaPropertyPredicate 上的 MPMediaItem 下载状态使用assetURL

iPhone 4 iOS 5 如何使用 Core Data 保存 MPMediaItem?

iOS:降低包含 iPod 音乐的 MPMediaItem 的比特率

将 MPMediaItem 与 simpleaudioengine 一起使用

swift,ios 12+中当前播放歌曲的MPMediaItem字段`lyrics`为空