Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Model framework for Cocoa and Cocoa Touch applications
Objective-C C
branch: master
Failed to load latest commit information.
Configuration @ 200d1a7
Libraries ++Specta to latest mainline
Proton.xcodeproj Removed PROManagedObjectController, which doesn't jive with MVVM (and…
Proton Link to VELAnimatedBinding example gist from PROBinding.h
ProtonTests Removed PROManagedObjectController, which doesn't jive with MVVM (and…
Tools
.gitignore Ignore generated Documentation folder
.gitmodules Added Specta and Expecta submodules
LICENSE.md Remove the BSD license clause that requires binary attribution
README.md Note the higher-order function and NSUndoManager extensions in the RE…

README.md

Proton is a utility framework for Cocoa and Cocoa Touch that provides tools useful for building a powerful model layer.

Features

  • 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 NSManagedObject and NSManagedObjectContext so callers have to write less code
  • 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)
  • Higher-order functions (map, filter, fold) for all built-in collection classes
  • Extensions to NSUndoManager to support blocks and make it simpler to manage undo groupings
  • PROFuture, an extremely fast and simple implementation of block-based futures

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.

Dependencies

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)

License

Proton is released under a modified version of the 3-clause BSD license. See the LICENSE file for more information.

Something went wrong with that request. Please try again.