内存管理需要帮助 - 静态类变量目标C.

时间:2012-05-12 13:14:20

标签: objective-c ios memory-management static-variables

我想使用静态类变量来维护播放列表对象的状态,该对象将在我的应用程序中的多个类之间共享。

我在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];
}

1 个答案:

答案 0 :(得分:2)

[NSMutableArray arrayWithCapacity]返回一个自动释放的对象(运行时应该抱怨没有当前的自动释放池)。

使用[[NSMutableArray alloc] initWithCapacity]代替并添加一个类方法,以便在完成时释放它。

编辑:干杯@Lvsti。