1

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

我在我的 AppDelegate 中调用 getPlaylist,以便调用我的初始化类方法并设置 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];
}
4

1 回答 1

2

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

改为使用[[NSMutableArray alloc] initWithCapacity]并添加一个类方法以在完成后释放它。

编辑:干杯@Lvsti。

于 2012-05-12T13:20:08.263 回答