Proton is a utility framework for Cocoa and Cocoa Touch that provides tools useful for building a powerful model layer.
- A simple and extensible system for bindings, suitable for use on iOS and for replacing Cocoa Bindings on OS X
- Components to make Core Data easier to use, including:
PROCoreDataManager, to manage all the resources associated with a single database
- Support for copying managed objects between contexts
- Support for encoding and decoding managed objects to and from property lists
- Convenience methods on
NSManagedObjectContextso callers have to write less code
PROFuture, an extremely fast and simple implementation of block-based futures
- A class for key-value observing that makes it easier to manage the observation of many different objects or key paths
- A couple macros to check key paths at compile time (i.e., fail to build when an invalid key path is used)
All of the above features are unit tested, to validate the typical use cases and detect any future breakage.
Proton has been built with the Model-View-ViewModel architectural pattern in mind. The
PROViewModel abstract class can serve as a base for any application-specific view model layer.
All dependencies can be retrieved by running
git submodule update --init --recursive from the top level of the repository.
- Xcode projects in the repository are configured using prebuilt xcconfigs
- The unit tests for Proton are written using Specta and Expecta
- Logging is implemented using the CocoaLumberjack logging framework
- Parts of libextobjc and SafeDispatch are used in Proton (but are already present in the repository)
Proton is released under a modified version of the 3-clause BSD license. See the LICENSE file for more information.