我们正在使用UInavigationController,其中一个视图是播放音轨的视图。

我们正在使用AVfountation框架。

单击按钮,我们导航到音频列表(播放音乐的位置)

-(IBAction)audioBtnClicked
{
    audiolist *audio=[[audiolist alloc] initWithNibName:@"audiolist" bundle:nil];
    [self.navigationController pushViewContrller:audio animated:YES];
    [audiolist release];
}


当用户播放音乐并导航时,音乐继续播放

问题:当用户导航回到歌曲列表并播放另一首曲目时,
同时播放2首歌曲。

我们认为,每次用户向后导航时,都会创建一个新的audiolist实例。
我们只希望有一个audiolist实例。我们如何使audiolist的第一个实例具有持久性,以及如何引用它?

最佳答案

你必须做

[audio release];


并不是

[audiolist release];


音频列表似乎是您的班级名称。命名约定说,类应使用大写字母和驼峰式,因此应使用AudioList。这将使您的代码更具可读性。

要拥有一个AudioList的单个共享实例,可以执行以下操作:

在您的标头中添加一个类方法:

+ (AudioList *) sharedInstance;


然后将其添加到您的实现文件中:

@implementation AudioList

static AudioList *gSharedInstance = nil;

+ (AudioList *) sharedInstance {
    if (gSharedInstance == nil) {
        gSharedInstance = [[AudioList alloc] init];
    }

    return gSharedInstance;
}


现在,您随时可以使用

[AudioList sharedInstance];


干杯。

关于objective-c - 如何在iOS中拥有永久 View ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7768679/

10-14 22:23