我工作的一個可可應用程序,監視你聽在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