2012-05-12 92 views
1

我想使用靜態類變量來維護將在我的應用中的多個類之間共享的播放列表對象的狀態。需要內存管理幫助 - 靜態類變量目標C

我在AppDelegate中調用getPlaylist,以便調用我的initialize類方法並設置MSMutableArray。

但是,當我調用addItemToPlaylist時,內容變量不再是NSMutableArray的靜態實例。相反,它指向內存中完全不同的地址 - 每次調試時都有一個不同的地址。

我在做什麼明顯錯誤?提前致謝。

#import "Playlist.h" 
static NSMutableArray *content; 

@implementation Playlist 

+ (void)initialize 
{ 
    content = [NSMutableArray arrayWithCapacity:10]; 
} 

+ (NSMutableArray *)getPlaylist 
{ 
    if ([content count] == 0) 
     return nil; 

    return content; 
} 

+ (void)addItemToPlaylist:(PlaylistTrack *)track; 
{ 
    [content addObject:track]; 
} 

回答

2

[NSMutableArray arrayWithCapacity]返回一個自動釋放的對象(應該在運行時約那裏是沒有電流自動釋放池的投訴)。

改爲使用[[NSMutableArray alloc] initWithCapacity],並添加一個類方法以在完成時釋放它。

編輯:乾杯@Lvsti。

+0

'[[NSMutableArray alloc] initWithCapacity:]'準確地說 – Lvsti

+0

@Lvsti Yup - 爲獲取它而歡呼。 – trojanfoe

+0

令人驚歎的東西 - 感謝您的快速回復。如果出現在控制檯窗口中,我沒有看到有關autorelease池的運行時投訴?再次感謝。 –