gpt4 book ai didi

objective-c - 在 NSObject 中播放 NSSound(使用 Objective-C 的 Mac App)

转载 作者:太空狗 更新时间:2023-10-30 03:45:26 31 4
gpt4 key购买 nike

我正在制作一款需要播放音乐的游戏。为了使我的代码更易于管理,我想制作一个 NSObject 来处理声音(例如淡入淡出、在播放列表中播放声音等)。我有这段代码:

NSSound *music = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.filename ofType:self.fileExtention] byReference:NO];
[music play];

这段代码在我将它放在 AppDelegate.m 文件中时有效,但在我将它放在新的 NSObject 类中时不起作用。

NSObject 类中的代码(名为 Music):

- (void)playMusic:(NSString *)fileName ofType:(NSString *)type
{
NSSound *music = [[NSSound alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:self.filename ofType:self.fileExtention] byReference:NO];
[music play];

NSLog(@"Works!");
}

我在 AppDelegate.m 中使用此代码调用方法:

[[[Music alloc] init] playMusic:self.fileName ofType:self.extension];

执行此操作时,它会记录“Works!”这意味着代码已执行。

因此,完全相同的代码在 AppDelegate 中有效,但在 NSObject 类中无效。有谁知道是否可以在 NSObject 类中播放 NSSound(如果不能,为什么?),如果可以,如何编辑代码以使其工作?这将使我的代码看起来不那么困惑 ;)

最佳答案

尝试在主线程上调用方法,

dispatch_async(dispatch_get_main_queue(), ^{
// do work here
});

关于objective-c - 在 NSObject 中播放 NSSound(使用 Objective-C 的 Mac App),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47035537/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com