【发布时间】:2014-03-01 02:36:28
【问题描述】:
我正在编写一个音乐播放器,我声明了一个 NSMutableArray 来跟踪播放的歌曲。
我想知道 MPMediaItem 的数据大小(平均大小)是多少。
我想创建一个数组,其中包含播放的每个 MPMediaItem 的信息,但我想知道是存储每个 MPMediaItem 还是只存储有关歌曲(标题、艺术家和专辑标题)的信息(字符串)更好。
谢谢!
【问题讨论】:
标签: ios objective-c
我正在编写一个音乐播放器,我声明了一个 NSMutableArray 来跟踪播放的歌曲。
我想知道 MPMediaItem 的数据大小(平均大小)是多少。
我想创建一个数组,其中包含播放的每个 MPMediaItem 的信息,但我想知道是存储每个 MPMediaItem 还是只存储有关歌曲(标题、艺术家和专辑标题)的信息(字符串)更好。
谢谢!
【问题讨论】:
标签: ios objective-c
这两件事(信息与 MPMediaItem)实际上是一回事!它们都只是字符串的集合。 MPMediaItem 是指向磁盘上项目的指针,它本身被视为只是一个轻量级的信息集合(就像 NSStrings 的 NSDictionary,这基本上是 你 无论如何都会做的)。
唯一重要的是收集信息的行为。例如,执行初始 MPMediaQuery 可能需要一些时间。但是,一旦您得到答案,无论是收藏品还是媒体项目或其他任何东西,您都可以将它们存储起来。另一方面,如果您事先知道自己想要什么信息,那么预先收集它并没有什么坏处——尽管这也需要一些时间。例如,我这样做:
MPMediaQuery *query = [MPMediaQuery albumsQuery];
NSArray* albums = [query collections];
NSArray* titles = [albums valueForKey: @"repItemTitle"];
repItemTitle 在 MPMediaItemCollection 上的类别中定义:
- (id) repItemTitle {
return [[self representativeItem]
valueForProperty: MPMediaItemPropertyAlbumTitle];
}
不过,总的来说,我会说:不要过早优化!让应用程序正常工作。如果您稍后发现存在某种性能/内存问题,那么如果您的结构正确,那么在幕后更改模型实现将是微不足道的。 (但我认为你不必这样做。)
【讨论】: