Dejal Open Source

David Sinclair, owner and developer of Dejal, has released the following Cocoa/Objective-C code as open source for macOS and iOS.

You are welcome to download and use this code, subject to the License Agreement. Read on for more information.

Note: most work nowadays is done in Swift; some of this code will be open-sourced at a later date.

Consulting Available

Looking for a developer for your macOS or iOS project? David may be able to help. With more than a quarter century of commercial Mac programming experience, and nearly a decade on iOS, he brings a rich set of skills to any project. David is willing to consider long- or short-term projects, on an hourly, milestone, or per-job basis, working from his home office near Portland, Oregon. Learn more on the Consulting page.

License Agreement

The Dejal open source code is released under a standard BSD license.

Before downloading any of this code, please read the Dejal Open Source License page for details of attribution and more.

Get a Non-Attribution License

If you want or need to use the code without giving Dejal credit, non-attribution licenses are available for purchase from the Developer Store.


You can use this code completely free of charge, if you give Dejal credit. But if this code helps you solve a problem or saves you time, David always appreciates a donation to support and encourage future open source development.

Visit the Developer Store to make a donation via PayPal.

Alternatively, a fun option is to send David a gift from his Wish List. It's always nice to receive a surprise package in the mail.

Get In Touch!

If you use this code, David wants to hear from you! In the future we might link to apps that use these projects, which would help your Google juice. David can't promise to help with the code, but will try to answer questions about it or licensing. Contact us.

If you find issues or want to request enhancements, please use the issue tracker for each project (hosted on GitHub). Or better yet, fork the code and implement the feature/fix yourself, then submit a pull request.

Keep Up To Date

Preferably use the GitHub repositories rather than zip archives to make it easier to get any updates.

You can also follow @dejalopen on Twitter to get notifications of updates, and/or subscribe to the RSS feed of the Dejal Blog filtered for Open Source topics.

DejalIntervalPicker (macOS)

DejalIntervalPicker is a custom Mac control similar to NSDatePicker, but for time intervals or ranges.


DejalObject (macOS & iOS)

DejalObject is an abstract data model class that can represent subclasses as dictionary or JSON data for saving to disk or over the network.


DejalUIKitCategories (iOS)

DejalUIKitCategories is a collection of categories for UIKit on iOS, to add useful methods to classes like UIBarButtonItem, UIColor, UIView, and others.


DejalAppKitCategories (macOS)

DejalAppKitCategories is a collection of categories for AppKit on macOS, to add useful methods to classes like NSMenu, NSTableView, NSTextView, and others.


DejalAppKitExtensionCategories (macOS)

DejalAppKitExtensionCategories is a collection of categories to extend Foundation classes with methods specific to macOS.


DejalFoundationCategories (macOS & iOS)

DejalFoundationCategories is a collection of Foundation-level categories, to add useful methods to classes like NSArray, NSDictionary, NSString, and others.


DejalUtilities (macOS & iOS)

DejalUtilities is a single header file with some useful #define macros and static functions.


DejalBackgroundView (macOS)

DejalBackgroundView is a NSView subclass to provide a background color and/or border color to a view.


DejalActivityView (iOS)

DejalActivityView conveniently displays a horizontal, bezel-style, or keyboard-covering view with a spinning activity indicator and adjustable text.


DejalView (iOS)

DejalView is a UIView subclass to detect a tap outside a button (or other view) like UITableView's red Delete button.

Table Delete button
(Contacts app)