gpt4 book ai didi

objective-c - ScriptingBridge 导致 iTunes 在退出后重新启动

转载 作者:行者123 更新时间:2023-12-03 16:30:07 27 4
gpt4 key购买 nike

我正在开发一个 Cocoa 应用程序,用于监视您在 iTunes 中收听的内容,并且由于我的目标是 Mac OS 10.5 及更高版本,因此我决定使用 Scripting Bridge .

如果我尝试关闭 iTunes 的时间太接近我的应用程序轮询当前轨道的时间,iTunes 将立即重新启动!可靠地防止这种行为的唯一方法是先退出我的应用程序,然后退出 iTunes。

切换到 EyeTunes解决了问题,但它是一个相当旧的代码库,我希望我可以在没有外部库的情况下完成此任务。我肯定做错了什么导致重新启动?

这是一些示例代码;此代码段每隔几秒运行一次,由 NSTimer 触发。

#import "iTunesBridge.h" // auto-generated according to Apple's docs

-(void)updateTrackInfo {
iTunesApplication *iTunes = [[SBApplication alloc] initWithBundleIdentifier:@"com.apple.iTunes"];
iTunesTrack *currentTrack = [iTunes currentTrack];
// inspect currentTrack to determine what's being played...
[iTunes release];
}

这是 Scripting Bridge 的已知问题,还是我使用不当?

最佳答案

Is this a known issue with Scripting Bridge, or am I using it incorrectly?

可能两者都有,尽管文档对此并不清楚。

The applicationWithBundleIdentifier: class method如果应用程序未运行,则会启动该应用程序,但文档并未提及 the initWithBundleIdentifier:instance method .

最安全的方法是使用 NSRunningApplication (或者用于 Leopard 兼容性的 Process Manager)来查找正在运行的 iTunes 进程,选择一个,然后 target it by its process identifier 。如果您没有找到任何 iTunes 进程,那么,当然,不要尝试定位某个进程(跳过创建 SBApplication 并与之对话)。

关于objective-c - ScriptingBridge 导致 iTunes 在退出后重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2687954/

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