我工作的一个可可应用程序,监视你听在iTunes什么,因为我针对的Mac OS 10.5或更高版本,我已经决定使用Scripting Bridge。ScriptingBridge导致iTunes来重新启动后退出
如果我试图关闭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的已知问题,还是我使用不正确?
这两个方法之间的唯一区别应该是'applicationWith ...'返回'autoreleased'应用程序... – stefanB 2010-04-22 03:30:20
我同意,*应该*是唯一的区别。 ☺那符合他所描述的行为,这意味着这是他的问题。正如我所建议的那样,解决方案是寻找一个iTunes进程,并且(仅在找到一个进程时)通过PID来对其进行定位,而不是通过其包ID来定位iTunes。 – 2010-04-22 03:43:43
这就像一个魅力!谢谢你的帮助。 – 2010-04-22 04:14:26