On - 🍩 Unified communication pattern for iOS and macOS

  •        7

🍩 Unified communication pattern for iOS and macOS




Related Projects

KVOController - Simple, modern, thread-safe key-value observing for iOS and OS X.

  •    Objective-C

For more information on KVO, see Apple's Introduction to Key-Value Observing.While simple, the above example is complete. A clock view creates a KVO controller to observe the clock date property. A block callback is used to handle initial and change notification. Unobservation happens implicitly on controller deallocation, since a strong reference to the KVOController is kept.

THObserversAndBinders - Easy, lightweight, object-based key-value observing (KVO) and key-value binding (KVB) for iOS and Mac OS X

  •    Objective-C

Now, it seems like every Cocoa programmer out there has their own KVO and KVB solution, and I've tried a few of them. There are too many to enumerate here. Many of them are quite nice, but I couldn't find any that passed my personal 'feels comfortable' test with flying colours (and, though I know it's irrational, KVO just seems like it should be cleaner than a messily prefixed category on NSObject, objc_setAssociatedObject() or method swizzling). I like this API. It's one simple call to set up an block that fires when a property changes. Want to observe a whole bunch of things? Just set up a bunch ofTHObservers, store them in an array, then when it comes time to stop observing, release the array (maybe calling -stopObserving on the observers in the array first if there might be a reference to them lying around elsewhere, like in an autorelease pool).

RZDataBinding - Lightweight KVO-based data binding options.

  •    Objective-C

RZDataBinding is a framework designed to help maintain data integrity in your iOS or OS X app. It is built using the standard Key-Value Observation (KVO) framework, but is safer and provides additional functionality. Like KVO, RZDataBinding helps to avoid endless delegate chains by establishing direct callbacks for when an object changes state. Alternatively, download the repository and add the contents of the RZDataBinding directory to your project.

ftdomdelegate - Create and manage a DOM event delegator

  •    Javascript

FT's dom delegate library is a component for binding to events on all target elements matching the given selector, irrespective of whether anything exists in the DOM at registration time or not. This allows developers to implement the event delegation pattern. FT DOM Delegate is developed by FT Labs, part of the Financial Times.

Hanson - Lightweight observations and bindings in Swift

  •    Swift

Hanson is a simple, lightweight library to observe and bind values in Swift. It's been developed to support the MVVM architecture in our Blendle iOS app. Hanson provides several advantages to using KVO in Swift, such as a Swiftier syntax, no boilerplate code, and the ability to use it in pure Swift types. Now, whenever the view model's isLoadingData property is set to a different value, it will automatically be set to the view's showsActivityIndicator property.

SKBounceAnimation - A CAKeyframeAnimation subclass that lets you quickly and easily set a number of bounces, and start and end values, and creates an animation for you

  •    Objective-C

SKBounceAnimation is a CAKeyframeAnimation subclass that creates an animation for you based on start and end values and a number of bounces. It’s based on the math and technology in this blogpost: khanlou.com/2012/01/cakeyframeanimation-make-it-bounce/ which in turn was based partially on Matt Gallagher’s work here: cocoawithlove.com/2008/09/parametric-acceleration-curves-in-core.html. We set the value of our keypath to the final value, and then perform the animation. When the animation finishes, it is automatically removed from the layer, and the finalValue takes over. If you do not use -(void)setValue:forKeyPath:, the original value for the keyPath will take over and the animation will snap back to original location after the animation is over.


  •    Objective-C

KVOBlockNotificationCenter is a set of source code for using blocks with Cocoa's Key Value Observing (KVO). Originally inspired by Mike Ash's "KVO Done Right" blog post and code: http://www.mikeash.com/?page=pyblog/key-value-observing-done-right.html See http://toxicsoftware.com/kvoblocks/ for more information.

Closures - Swifty closures for UIKit and Foundation

  •    Swift

Closures is an iOS Framework that adds closure handlers to many of the popular UIKit and Foundation classes. Although this framework is a substitute for some Cocoa Touch design patterns, such as Delegation & Data Sources and Target-Action, the authors make no claim regarding which is a better way to accomplish the same type of task. Most of the time it is a matter of style, preference, or convenience that will determine if any of these closure extensions are beneficial. Whether you're a functional purist, dislike a particular API, or simply just want to organize your code a little bit, you might enjoy using this library.

Buffer - Swift μ-framework for efficient array diffs, collection observation and cell configuration.

  •    Swift

Swift μ-framework for efficient array diffs, collection observation and data source implementation. Buffer is designed to be very granular and has APIs with very different degrees of abstraction.

crxviewer - Add-on / web app to view the source code of Chrome / Firefox / Opera 15 extensions and zip files

  •    Javascript

The default action (showing the above options) can be changed via the "Primary action on click" menu that appears when you right-click on the extension button. As mentioned before, this extension activates on the Chrome Web Store by default. It's also possible to view the source code of Chrome, Opera 15+ and Firefox extensions that are hosted elsewhere. Further, there is an option to show a contextmenu entry on links whose target is a Chromium extension. Both features can be toggled at the options page.

GammaRay - GammaRay is a tool to poke around in a Qt-application and also to manipulate the application to some extent

  •    C++

Introduction GammaRay is a software introspection tool for Qt applications developed by KDAB. Leveraging the QObject introspection mechanism it allows you to observe and manipulate your application at runtime. This works both locally on your workstation and remotely on an embedded target. Augmenting your instruction-level debugger, GammaRay allows you to work on a much higher level, with the same concepts as the frameworks you use. This is especially useful for the more complex Qt frameworks such as model/view, state machines or scene graphs.

hotkey - Global DOM element activation

  •    Javascript

Trigger an action on a target element when a key or sequence of keys is pressed on the keyboard. This triggers a focus event on form fields, or a click event on <a href="...">, <button> and <summary> elements. By default, hotkeys are extracted from a target element's data-hotkey attribute, but this can be overridden by passing the hotkey to the registering function (install) as a parameter.

UIAlertView-Blocks - A category for UIAlertView which allows you to use blocks to handle the pressed button events rather than implementing a delegate

  •    Objective-C

This is a quickie pair of categories on UIAlertView and UIActionSheet which enables you to use blocks to handle the button selection instead of implementing a delegate. Using UIAlertView as the main example here, instead of calling the traditional -initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles: initializer, you call the new initializer: -initWithTitle:message:cancelButtonItem:otherButtonItems:. This works just like the traditional initializer, except instead of using strings for the buttons, it takes instances of RIButtonItem's. This is a class also defined as part of this framework which simply encapsulates the button label and the action block to execute when that button is tapped. The last argument to the initializer is variadic, just like the traditional initializer, so it must be nil terminated.

OneSignal-Website-SDK - OneSignal is a free push notification service for web and mobile apps

  •    TypeScript

OneSignal is a free push notification service for web and mobile apps. This SDK allows your site's visitors to receive push notifications from you. Send visitors custom notification content, target specific users, and send automatically based on triggers.

jquery.event.swipe - jQuery custom events swipeleft, swiperight, swipeup and swipedown

  •    HTML

One of swipeleft, swiperight, swipeup or swipedown is triggered on moveend, when the move has covered at least a threshold proportion of the dimension of the target node. Swipe events are a thin wrapper around the moveend event, a convenience to reveal when a finger has made a swipe gesture. As such they don't bubble — they are retriggered on each passing of a moveend event. The underlying move events do bubble and delegate. Use them if you need more flexibility.

Minya - A simple basic hierarchy for iOS development with Objective-C. It is based on MVCS and KVO.

  •    Objective-C

A simple basic hierarchy for iOS development with Objective-C. It is based on MVCS and KVO. The following image is the all elements of this hierarchy.

MPNotificationView - An in-app notification view that mimics the iOS 6 notification views which appear above the status bar

  •    Objective-C

An in-app notification view that mimics the iOS 6 notification views which appear above the status bar. Compatible with iOS 4.3 and above. Also by specifying a delegate which implements the MPNotificationViewDelegate and finally by handling the kMPNotificationViewTapReceivedNotification notification.

Openbravo - The Agile ERP

  •    Java

Openbravo is the web-based Open Source ERP solution. It includes applications like Accounting, Sales and CRM, Procurement, Inventory, Production, Project and Service Management. Openbravo is three-time winner of Infoworld's Bossie award for best open source software application.

pb-for-desktop - The missing Desktop application for Pushbullet.

  •    Javascript

PB for Desktop is a lightweight open-source Desktop app for PushBullet. Receive native push notifications on macOS, Windows and Linux. Not affiliated with PushBullet Incorporated. Uses the macOS Notification Center, the Windows 10 Action Center and libnotify for Linux.