2012-02-05 24 views
6

Apple documentation के अनुसार, FSEvents को कॉलबैक में की परवाह किए बिना स्थापित कर रहे हैं,FSEvents फ़ाइल झंडे घटना धारा निर्माण विकल्पों

/* 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 एपीआई से मुझे पास की जाती हैं। मुझे संदेह है कि यह एक बग है, लेकिन मुझे पूरा यकीन नहीं है। मैं ओएस एक्स शेर का उपयोग कर रहा हूं 10.7.2

नमूना कोड यहां पाया जा सकता है। http://stuconnolly.com/downloads/scevents/

संपादित

सवाल यह है:
किसी और का अनुभव है एक ही परिणाम?
क्या यह एक व्यवहार है जिसे मैं फ़ाइल इवेंट फ्लैग की जांच करने के लिए भरोसा कर सकता हूं?

+0

तो सवाल क्या है? –

+0

ओह, सवाल जोड़ा गया। – Tony

+0

को इंगित करने के लिए धन्यवाद एक ही चीज़ को देखकर। ओएस 10.8.2 यहाँ। यह निश्चित रूप से दस्तावेज़ीकरण के तरीके से व्यवहार नहीं कर रहा है। –

उत्तर

0

वास्तव में, ये ध्वज सामान्य रूप से सेट होते हैं हालांकि ध्वज गलत दिखता है।

उदाहरण के लिए, आपको ध्वज 133120 मिला है। यह 0x20800 है। तो, आपको "kFSEventStreamEventFlagItemRenamed = 0x00000800" और "kFSEventStreamEventFlagItemIsDir = 0x00020000" नोटिस करना चाहिए।

यह कहना है कि, केएफएसईवेंटस्ट्रीमइवेंटफ्लैग इटैमनाम & केएफएसईवेंटस्ट्रीमइवेंटफ्लैगइटेम आईएसडीर आप चाहते हैं।