Commit 0fb89c86 authored by Aral Balkan's avatar Aral Balkan

Updated the readme with the latest installation instructions.

parent 9c9a552a
# Delay
Delay is an easy-to-use micro-framework for delaying code execution in a cancellable manner. It uses Grand Central Dispatch and blocks.
Delay is an easy-to-use micro-library for delaying code execution in a cancellable manner. It uses Grand Central Dispatch and blocks.
## Installation
### Carthage
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
Add `git@source.ind.ie:project/delay.git` to your Cartfile and [follow the instructions on Carthage’s readme](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application).
### Manual
#### iOS
This requires hacking the Xcode project file but it’s still the most elegant way of doing things. If you want a better way, dupe this radar for seamless support of fat frameworks in Xcode.
1. Build the framework target.
2. In Xcode, add the framework to the Embed Binaries
3. Edit the `project.pbxproj` (in the <your-project>.xcodeproj folder) file and replace the line that reads something like:
```A7E653511C2496F700988537 /* Delay.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Delay.framework; path = "../../path/in/DerivedData/to/Delay.framework"; sourceTree = "<group>"; };```
With:
```A7E653511C2496F700988537 /* Delay.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Delay.framework; path = "$(CONFIGURATION_BUILD_DIR)/Delay.framework"; sourceTree = "<group>"; };```
(In other words, you’re replacing the hardcoded path to the Delay.framework within your particular Derived Data folder with a generic one. This means that anyone else who checks out your project will get the correct framework.)
#### OS X
1. Just drag the framework into the Linked Frameworks and Binaries section of your project (under General).
(For an example of manually adding the framework, see the iOS and OS X demo apps that ship with this framework.)
## Usage
......@@ -60,16 +91,16 @@ For example, you can use this to implement auto-complete without flooding the lo
textDidChangeHandler = handle(NSControlTextDidChangeNotification, from: myTextInput)
{
/* with */ notification in
let text = self.myTextInput.stringValue
// Throttle auto-complete lookups to every 1/3rd of a second.
cancellableAutoCompleteCommand = cancellableAutoCompleteCommand?.reset() ?? delay(0.3)
{
// Perform expensive operation: look-up text for auto-complete
// …
}
}
}
}
override func viewWillDisappear()
......@@ -88,5 +119,5 @@ Note that Delay is optimised for ease of authoring, beauty of interface and clar
Delay based on the work of [Evgenii Rtishchev](https://github.com/katleta3000/CancelBlocks) and [Chris Brind](http://stackoverflow.com/questions/24034544/dispatch-after-gcd-in-swift/24318861#24318861) (with thanks to [Cezary Wojcik](http://stackoverflow.com/a/24034838/253485).)
Copyright © Aral Balkan.
Copyright © Aral Balkan.
Released with ♥ by [Ind.ie](https://ind.ie) under the MIT License.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment