создание переменных экземпляра во время выполнения? - PullRequest
1 голос
/ 05 ноября 2010

эй, у меня тут небольшая путаница ..

Я использую EyeTunes Framework для небольшого учебного проекта. Это контроллер iTunes.

Фреймворк предоставил мне массив списков воспроизведения, которые в настоящее время существуют в iTunes. Поскольку некоторые списки воспроизведения содержат тысячи дорожек, я планирую создавать массивы объектов дорожек каждого списка воспроизведения в методе applicationDidFinishLaunching. (и сохранить эти массивы)
Таким образом, когда система привязок должна отображать список дорожек списка воспроизведения, ей не нужно загружать весь этот список в данный момент. Так хорошо, пока ..

Теперь, чтобы создать треки-массивы для каждого плейлиста, который я хотел сделать:
(allPlaylists - это массив, содержащий все плейлисты iTunes [ETPlaylist *];
ETPlaylist возвращает массив треков со своим «методом треков»)

for (ETPlaylist *aPlaylist in allPlaylists){

    arrayContainingTracks = [aPlaylist tracks]

}

так

  1. Как мне установить другое имя для "arrayConistingTracks" в каждом перечислении?
    И как это сделать в заголовочном файле, в котором должны быть объявлены все экземпляры Vars?

  2. и BTW: до какого уровня отношений массив загружает свое содержимое в память при выделении?

1 Ответ

2 голосов
/ 05 ноября 2010

Я не уверен, что полностью понимаю вопрос (с какой стати вы хотели бы изменить имя переменной?).Но следующий код вставит все дорожки всех списков воспроизведения в arrayContainingTracks (при условии, что это экземпляр NSMutableArray):

for (ETPlaylist *aPlaylist in allPlaylists)
{
    [arrayContainingTracks addObjectsFromArray:[aPlaylist tracks]];
}

Обратите внимание, что все дорожки будут сглажены в массиве.Если вы хотите предварительно загрузить каждую дорожку, но также сохранить имя списка воспроизведения, сохраните их в NSMutableDictionary вместо:

for (ETPlaylist *aPlaylist in allPlaylists)
{
    [playlistsByName setObject:[aPlaylist tracks] forKey:[aPlaylist name]];
}

Здесь я предполагаю, что класс ETPlaylist имеет name метод.

...