我想使用静态类变量来维护播放列表对象的状态,该对象将在我的应用程序中的多个类之间共享。
我在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];
}
答案 0 :(得分:2)
[NSMutableArray arrayWithCapacity]
返回一个自动释放的对象(运行时应该抱怨没有当前的自动释放池)。
使用[[NSMutableArray alloc] initWithCapacity]
代替并添加一个类方法,以便在完成时释放它。
编辑:干杯@Lvsti。