1

嘿,我這裏有點困惑..在運行時創建實例變量?

我正在使用EyeTunes框架進行一些學習項目。它是一個iTunes控制器。

該框架給了我目前存在於iTunes中的一系列播放列表。 由於有些播放列表包含數千個音軌,因此我計劃在「applicationDidFinishLaunching」方法中創建每個播放列表的音軌對象數組。 (並保留這些數組)
這樣,當綁定系統應顯示播放列表的曲目列表時,此時不必加載整個列表。這麼好到目前爲止..

現在,爲了創建這些軌道陣列爲每個播放列表我想要做:
(allPlaylists是包含所有iTunes播放列表[ETPlaylist *]的陣列;
一種ETPlaylist返回的數組與它的軌道的「軌道法」)

for (ETPlaylist *aPlaylist in allPlaylists){ 

    arrayContainingTracks = [aPlaylist tracks] 

} 

所以

  1. 我要如何在每個枚舉「arrayContainingTracks」設置不同的名字?
    如何在頭文件中做到這一點,其中所有的實例變量都必須聲明?

  2. 和順便說一句:在分配時,數組將其內容加載到內存的最高級別是什麼?

回答

2

我不確定我完全理解這個問題(爲什麼你要改變變量名?)。但是,下面的代碼將插入每個播放列表的每一個曲目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方法。

+0

謝謝!我的意思是不改變名字。我想到:在第一枚枚舉:arrayContainingFirstPlaylistTracks = [FirstPlaylist曲目] >>在第二枚枚舉:arrayContainingSecondPlaylistTracks = [SecondPlaylist曲目]等等。我知道這可能有點不可思議;) – bijan 2010-11-05 02:12:49

+0

因此,在你的第一個代碼片段中,數組將包含沒有任何信息的所有曲目,它們屬於哪個播放列表? – bijan 2010-11-05 02:18:53

+0

@bijan是的,第一個代碼片段只保存曲目。 – 2010-11-08 03:59:04