我正在玩Spotlight API,Carbon和Cocoa版本,並且我似乎每隔一段時間都會遇到同樣的問題:查詢從不運行,並且從不觸發任何通知。不過,我想強調的是,大多數時候確實運行了,所以有些奇怪的事情正在發生。爲什麼Spotlight有時不運行我的查詢?
我不寫任何特定的應用程序。這只是一個Spotlight測試工具,所以查詢不會基於用戶輸入而被解僱。而是在我的控制器內部配置並執行applicationDidFinishLaunching:
。本來我試圖在awakeFromNib
這樣做,但在這種情況下,查詢從來沒有跑。 (我的理論是,RunLoop還沒有開始,但我不知道。)
下面是applicationDidFinishLaunching:
代碼爲碳:
CFStringRef predicate = CFSTR("kMDItemContentTypeTree == 'public.movie'");
_query = MDQueryCreate(NULL, predicate, NULL, NULL);
_query = (MDQueryRef)CFMakeCollectable(_query);
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(notify:)
name:nil
object:(id)_query];
MDQueryExecute(_query, kMDQueryWantsUpdates);
我寫上面的內存,因此它可能包含不屬於原文的拼寫錯誤。原始代碼編譯並運行得很好,除了偶爾不工作。
什麼給?也許applicationDidFinishLaunching:
不適合Spotlight查詢。