2012-02-05 21 views
6

Apple documentation,在回調至FSEventsFSEvents文件標誌設置,不管事件流創造選項

/* These flags are only set if you specified the FileEvents */ 
/* flags when creating the stream. */ 
kFSEventStreamEventFlagItemCreated = 0x00000100, 
kFSEventStreamEventFlagItemRemoved = 0x00000200, 
kFSEventStreamEventFlagItemInodeMetaMod = 0x00000400, 
kFSEventStreamEventFlagItemRenamed = 0x00000800, 
kFSEventStreamEventFlagItemModified = 0x00001000, 
kFSEventStreamEventFlagItemFinderInfoMod = 0x00002000, 
kFSEventStreamEventFlagItemChangeOwner = 0x00004000, 
kFSEventStreamEventFlagItemXattrMod = 0x00008000, 
kFSEventStreamEventFlagItemIsFile = 0x00010000, 
kFSEventStreamEventFlagItemIsDir = 0x00020000, 
kFSEventStreamEventFlagItemIsSymlink = 0x00040000 

不過,我三聯檢查了kFSEventStreamCreateFlagFileEvents標誌沒有被設置調用

FSEventStreamRef FSEventStreamCreate( 
    CFAllocatorRef allocator, 
    FSEventStreamCallback callback, 
    FSEventStreamContext *context, 
    CFArrayRef pathsToWatch, 
    FSEventStreamEventId sinceWhen, 
    CFTimeInterval latency, 
    FSEventStreamCreateFlags flags); 

但無論我做什麼,kFSEventStreamEventFlagItem*標誌仍將在事件從FSEvents API傳遞給我時設置。我懷疑這是一個錯誤,但我不太確定。我正在使用OS X Lion 10.7.2

示例代碼可以在此處找到。 http://stuconnolly.com/downloads/scevents/

編輯

的問題是:
任何人都經歷了同樣的結果?
這是我可以依賴的行爲來檢查文件事件標誌?

+0

那麼問題是什麼? – 2012-02-05 04:58:42

+0

oops,增加了這個問題。謝謝指出 – Tony 2012-02-05 05:04:39

+0

看到同樣的事情。 OS 10.8.2在這裏。它絕對不是文檔建議的方式。 – 2012-11-27 19:24:24

回答

0

事實上,雖然標誌看起來不正確,但這些標誌正常設置。

例如,您得到了一個標誌133120.即0x20800。 因此,您應該注意「kFSEventStreamEventFlagItemRenamed = 0x00000800」 和「kFSEventStreamEventFlagItemIsDir = 0x00020000」。

也就是說,kFSEventStreamEventFlagItemRenamed & kFSEventStreamEventFlagItemIsDir是你想要的。

相關問題