1

アプリ内の複数のクラス間で共有される Playlist オブジェクトの状態を維持するために、静的クラス変数を使用したいと考えています。

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 に答える