All Projects → eBay → Svnetworking

eBay / Svnetworking

Licence: bsd-3-clause
Objective-C remote resource loading and networking

SVNetworking


SVNetworking is a library for networking and resource loading in iOS applications. It is primarily designed for use with key-value observing, and attempts to make use of functional concepts when possible. To aid in this, implementations of property binding and some higher-order functions are included.

Requests

Requests are handled by a subclasses of SVRequest. These are fairly simple classes - SVNetworking is generally lightweight, and tries to solve most problems while maintaining elegance, instead of solving all possible problems.

SVRequest uses delegation instead of completion/failure blocks - while this often results in slightly more code, it avoids retain cycles, "weakSelf", and nested "callback hell".

While the request classes were originally the entirety of SVNetworking, the focus of the library is now on resource loading.

Remote Resources

The abstract class SVRemoteResource provides a base for implementations of resources that are loaded asynchronously. SVRemoteResource has no coupling with SVRequest or network requests in general (although some subclasses do) - it can be easily used with any other networking library, or with any other asynchronous process with an end result. For example:

  • Loading large files from disk
  • Procedural generation
  • Video processing

Resources are generally uniqued for memory benefits (among others), but this is optional.

Remote resources are intended for use with key-value observing. The binding categories on NSObject and the SV_KEYPATH macro are intended to aid in this.

Documentation

SVNetworking is fully documented with appledoc, which can be easily installed:

brew install appledoc

Once appledoc is installed, use the scripts in the Documentation directory to generate documentation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].