Чтение информации о MP3 с помощью цели c

Причина не использовать ICloneable не , потому что это не имеет универсального интерфейса. причина не использовать его состоит в том, потому что это неопределенно . Это не ясно дает понять, получаете ли Вы отмель или глубокую копию; это до лица, осуществляющего внедрение.

Да, MemberwiseClone делает мелкую копию, но противоположность MemberwiseClone не Clone; это было бы, возможно, DeepClone, который не существует. При использовании объекта через его интерфейс ICloneable Вы не можете знать, какой вид клонирования основного объекта работает. (И XML-комментарии не прояснят, потому что Вы получите интерфейсные комментарии, а не тех на методе Клона объекта.)

то, Что я обычно делаю, просто делают Copy метод, который делает точно, что я хочу.

11
задан Neeku 4 December 2013 в 08:43
поделиться

3 ответа

Информация ID3 может быть прочитана путем извлечения свойства kAudioFilePropertyInfoDictionary аудиофайла с помощью функции AudioFileGetProperty инфраструктуры AudioToolbox.

Подробное объяснение доступно на iphonedevbook.com

редактировать: Исходная ссылка теперь недоступна. InformIT имеет похожий пример кода, но он не такой полный.

19
ответ дан 3 December 2019 в 03:36
поделиться

Существует не так много библиотек синтаксического анализа ID3, на которые не распространяется GPL. Существует платформа Objective-C , которую, вероятно, можно было бы модифицировать для работы на iPhone при статической связи, но это LGPL. Чтобы соответствовать условиям LGPL со статически связанным двоичным файлом, вы должны предоставить достаточно промежуточных компонентов, чтобы кто-то мог повторно связать его со своей собственной версией библиотеки, что сложно (но не невозможно) для приложения для iPhone. Конечно, поскольку я не был в ситуации, когда мне приходилось это делать, я на самом деле не обсуждал это с юристом, и, поскольку я не из тех, вы не должны воспринимать это как авторитетный.

Лучше всего, если вы этого не сделаете ' Мне кажется, проконсультироваться с юристом - это использовать библиотеку C с более широкой лицензией, например libID3 , и включить ее в некоторые классы Objective C. Я также рекомендовал бы просто включить код напрямую, а не заниматься всеми проблемами сборки и компоновки статической библиотеки, но это всего лишь вопрос личного стиля.

3
ответ дан 3 December 2019 в 03:36
поделиться

Изучите структуру Media Player:

Для этого необходимо, чтобы рассматриваемый MP3 был частью библиотеки iPod на телефоне.

Например, определение имени каждого медиа-файла на телефоне (включая фильмы, подкасты и т. Д.):

MPMediaQuery *everything = [[MPMediaQuery alloc] init];

NSArray *itemsFromGenericQuery = [everything items];
for (MPMediaItem *item in itemsFromGenericQuery) {
    NSString *itemTitle = [item valueForProperty:MPMediaItemPropertyTitle];
    // ...
}

Похоже, что доступны следующие свойства:[Тысяча двести пятьдесят два] MPMediaItemPropertyMediaType

  • MPMediaItemPropertyTitle
  • MPMediaItemPropertyAlbumTitle [1 255] MPMediaItemPropertyArtist
  • MPMediaItemPropertyAlbumArtist
  • MPMediaItemPropertyGenre
  • MPMediaItemPropertyComposer [+1259] MPMediaItemPropertyPlaybackDuration
  • MPMediaItemPropertyAlbumTrackNumber [один тысяча двести шестьдесят один] MPMediaItemPropertyAlbumTrackCount [тысяча двести шестьдесят-два] MPMediaItemPropertyDiscNumber [1 263] MPMediaItemPropertyDiscCount [+1264 ] MPMediaItemPropertyArtwork
  • MPMediaItemPropertyLyrics
  • MPMediaItemPropertyIsCompilation
  • Выполнение этого без прохождения через структуру медиаплеера будет несколько трудным, и потребуется внешняя структура.

    5
    ответ дан 3 December 2019 в 03:36
    поделиться