即使ViewController在iOS中消失,也继续执行方法

时间:2012-01-21 04:36:40

标签: iphone ios methods continue

我有一个视图,用导航控制器推送另一个视图。在第二个视图中,我播放了一个音频,即使用户返回到第一个视图,我也想继续播放,弹出第二个视图,就像在iPod应用中一样。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您应该从视图控制器中抽象播放音频,因为它不是真正相关的功能(加上它会让你做你想做的事)。我建议创建一个单例对象,其功能是播放指定的歌曲,暂停/停止它,并从中检索状态(如isPlaying等)。我不会深入研究单身是什么/如何制作单身,因为其他堆栈溢出帖子和快速谷歌搜索将产生结果,但基本前提是你创建一个类并添加此方法:

+ (id)sharedInstance
{
    static dispatch_once_t dispatchOncePredicate = 0;
    __strong static id _sharedObject = nil;
    dispatch_once(&dispatchOncePredicate, ^{
        _sharedObject = [[self alloc] init];
    });
    return _sharedObject;
}

然后你可以创建一个这样的方法:

+ (void)playSongWithFile:(NSString *)fileName
{
    // retrieve the file and play it
}

在#import你的单身对象的任何一个类中,你都可以调用:

[[MySingleton sharedInstance] playSongWithFile:@"awesomesong.mp3"];

单例对象是一个对象,只能在应用程序执行期间实例化一次并“生存”,因此无论视图控制器发生了什么,它都会继续执行您所说的内容。