• R/O
  • HTTP
  • SSH
  • HTTPS

Résumé du dépôt

Tags
Aucun tag

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

An Objective-C wrapper for Mac OS X’s FSEvents C API.


Commits Récents RSS

Révision l'heure Auteur Message:
f812a2a 2014-03-01 23:43:33 Aron Cedercrantz master Merge tag '1.2.2'
97f8df2 2014-02-26 01:33:03 Aron Cedercrantz develop Merge pull request #27 from vtourraine/patch-1 Update po...
373bfa4 2014-02-25 17:26:48 Vincent Tourraine Update podspec to 1.2.2
acd2910 2014-02-25 04:49:51 Aron Cedercrantz 1.2.2 Bump version to 1.2.2.
b3fdee2 2014-02-21 07:59:33 Aron Cedercrantz Merge pull request #24 from rience/develop Fix warnings ...
ad660ce 2014-02-21 07:18:40 Krzysztof Adamski Pass unisgnedIntValue Instead of unsignedIntegerValue (XC...
91e7662 2014-02-21 07:17:27 Krzysztof Adamski Pass CDEventsEventStreamCreationFlags to CDEvents Init Me...
a1e5453 2013-12-10 21:25:08 rience Explicit Casting to “(uint)” When Converting From NSUInte...
4a8d60f 2013-07-03 05:21:08 Aron Cedercrantz Merge tag '1.2.1' Fix a memory management issue and more...
88c6487 2013-07-03 05:17:39 Aron Cedercrantz 1.2.1 Merge branch 'develop' of https://github.com/rastersize/C...

Tags récemment modifiées

Nom Révision l'heure Auteur
1.2.2 acd2910 2014-02-25 04:49:51 Aron Cedercrantz
1.2.1 88c6487 2013-07-03 05:19:38 Aron Cedercrantz
1.2.0 08c19ee 2012-11-22 04:53:00 Aron Cedercrantz
1.1.2 d560344 2011-10-25 02:38:37 Aron Cedercrantz
1.1.1 c728faf 2010-08-04 05:12:25 Aron Cedercrantz
1.1.0 79c2467 2010-04-10 23:29:31 Aron Cedercrantz
1.0.3 1e5fb6c 2010-04-10 08:51:45 Aron Cedercrantz
1.0.2 3622bb2 2010-04-04 20:24:18 Aron Cedercrantz
1.0.1 58ab928 2010-04-04 17:38:28 Aron Cedercrantz
1.0.0 b0699d2 2010-04-04 05:11:36 Aron Cedercrantz

Branches

Nom Révision l'heure Auteur Message:
master f812a2a 2014-03-01 23:43:33 Aron Cedercrantz Merge tag '1.2.2'
develop 97f8df2 2014-02-26 01:33:03 Aron Cedercrantz Merge pull request #27 from...
gh-pages 21d9b00 2013-04-07 05:20:24 Aron Cedercrantz Merge pull request #17 from...
support/1.1 d560344 2011-10-25 02:34:06 Aron Cedercrantz Merge branch 'release/1.1.2...
feature/block 98abd8e 2011-10-25 02:08:30 Aron Cedercrantz Fix lastEvent not getting s...
feature/arc f4da940 2011-08-31 03:29:43 Aron Cedercrantz Updated the readme to refle...

README.mdown

CDEvents

Note: The develop branch requires Mac OS X 10.6 or newer as the framework relies on ARC and blocks.

Website: http://rastersize.github.com/CDEvents

What is this?

It's an Objective-C wrapper for Mac OS X's FSEvents C API with support for blocks. Furthermore, all the classes are immutable and it should be thread-safe.

Requirements

Requires Mac OS X 10.6 (Snow Leopard) and an Intel 64-bit CPU. The requirements stems from that automatic reference counting (ARC) is supported from 10.6 and up as long as the modern (i.e. 64-bit) Objective-C runtime is used since ARC requires the non-fragile ABI. Although the built product works on 10.6 and up it must be built on a machine running 10.7 (Lion) using Xcode 4.2 and the 10.7 SDK as the 10.6 SDK does not include ARC. The built product support both manual memory management and automatic reference counting.

If you need to support older versions of OS X or garbage collection please see the branch support/1.1. All 1.1.x version will support garbage collection and OS X 10.5.

Usage

You can use either the block based version (recommended) or the delegate based. Using both systems at the same time is not supported.

Block based (recommended)

  1. Add CDEvents to your project,
    • either by compiling the project and dragging the CDEvents.framework into your project or
    • by dragging the entire CDEvents project into your project as a sub-project.
  2. Import the CDEvents.h header where you need it.
  3. Set up your CDEvents instance and give it a block to execute when a event occurs.

Easy example code:

self.events = [[CDEvents alloc] initWithURLs:<NSArray of URLs to watch>
                                       block:^(CDEvents *watcher, CDEvent *event) {
                                           <Your code here>
                                       }];

Or use all the all-options initiator:

self.events = [[CDEvents alloc] initWithURLs:<NSArray of URLs to watch>
                                       block:^(CDEvents *watcher, CDEvent *event) {
                                           <Your code here>
                                       }
                                   onRunLoop:[NSRunLoop currentRunLoop]
                        sinceEventIdentifier:kCDEventsSinceEventNow
                        notificationLantency:CD_EVENTS_DEFAULT_NOTIFICATION_LATENCY
                     ignoreEventsFromSubDirs:CD_EVENTS_DEFAULT_IGNORE_EVENT_FROM_SUB_DIRS
                                 excludeURLs:<NSArray of URLs to exlude>
                         streamCreationFlags:kCDEventsDefaultEventStreamFlags];

See the test app (TestApp) for an example on how to use the framework.

Delegate based

This is the same behavior as pre ARC and blocks.

  1. Add CDEvents to your project,
    • either by compiling the project and dragging the CDEvents.framework into your project or
    • by dragging the entire CDEvents project into your project as a sub-project.
  2. Import the CDEvents.h header where you need it.
  3. Import the CDEventsDelegate.h header where you need it (i.e. in the file which declares your delegate).
  4. Implement the delegate (-URLWatcher:eventOccurred:) and create your CDEvents instance.
  5. Zero out the delegate when you no longer need it.

Example code:

self.events = [[CDEvents alloc] initWithURLs:<NSArray of URLs to watch>
                                    delegate:<Your delegate>
                                   onRunLoop:[NSRunLoop currentRunLoop]
                        sinceEventIdentifier:kCDEventsSinceEventNow
                        notificationLantency:CD_EVENTS_DEFAULT_NOTIFICATION_LATENCY
                     ignoreEventsFromSubDirs:CD_EVENTS_DEFAULT_IGNORE_EVENT_FROM_SUB_DIRS
                                 excludeURLs:<NSArray of URLs to exlude>
                         streamCreationFlags:kCDEventsDefaultEventStreamFlags];

See the test app (TestApp) for an example on how to use the framework.

Important: Since Mac OS X 10.6 is set as the deployment target automatic zeroing of weak references is not available. Thus you must set the delegate of CDEvents to nil when you no longer want to receive events. That is, at least in your -dealloc method. This is also required when using 10.7 and up! (delegate is an unsafe_unretained property.)

For more details please refer to the documentation in the header files and the section "API documentation" below.

API documentation

Read the latest API documentation or browse for each version of CDEvents. Alternatively you can generate it yourself, please see below.

appledoc

Run the script api.appledoc.sh from the root of the project. The script takes one optional argument, the version of the project as a string. If the version string is empty "HEAD" will be used instead.

Doxygen

You can generate API documentation with the help of Doxygen. In Doxygen open the file api.doxygen, click the Run tab and then the Run doxygen button. When it's done you should have a directory (ignored by git) in the root of the project named api with a sub-directory html in which you will find index.html double-click and enjoy.

Contributors

See GitHubs contributors to rastersize/CDEvents statistics page.

License

The code is released under the MIT-license.

If you want, even though you really don't have to, I would love to hear what you use CDEvents for! Send me an email (first name (i.e. aron) @ last name (i.e. cedercrantz) dot se).