The following projects are the open source projects hosted at ProjectsWithLove. They are mostly projects that I've written and shared as part of my Mac programming blog, CocoaWithLove and are intended to teach concepts and techniques in Cocoa Mac programming.
Name | Related blog post | Description |
AnimationAcceleration | Parametric acceleration curves in Core Animation | A sample Mac application that simulates some functions that CAMediaTimerFunction can't achieve by using parametric CAKeyframeAnimation values. |
AppWithButton | Custom views in Interface Builder using IBPlugins | An Mac application with a custom drawn button and a plugin allowing the button to be viewed and customized in Interface Builder. |
AustralianPostcodes | The design of an iPhone application | An sample iPhone application that displays the locations of Australia Postcodes from a Core Data file in an MKMapView. |
CocoaScript | A Cocoa application for running scripts | A Mac application that runs a series of steps, recording the output of each step and tracking the success/failure result of the steps, much like a typical IDE build log. |
ColumnSplitView | An NSSplitView delegate for priority based resizing | A Cocoa Mac delegate class that configures a split view for this side panel and main view behavior — resizing the views in a split view based on a priority list. |
ColumnViewSample | Custom UI Bindings in Interface Builder | A Mac application demonstrating how to implement custom UI bindings with a column view designed like the iOS UITableView. |
CSVImporter | Writing a parser using NSScanner (a CSV parsing example) | An RFC4180 compliant CSV parser implementation to show you the basics of writing a recursive descent parser for importing data into your Cocoa applications. |
CurveDrawing | CoreGraphics curves and lines: a sample app | A small Mac application which shows the basic CoreGraphics line drawing primitives. Includes mouse editable control points to manipulate the primitives graphically. |
CustomObjectCreation | Alternative Objective-C object allocation for large arrays | Sample code that shows how to allocate arrays of Objective-C objects with a single malloc operation (for efficiency). |
EasyCustomTable | Easy custom UITableView drawing | A sample iPhone application that draws its UITableView using entirely custom graphics. |
FIFOQueues | Breadth-first traversal of a graph of Objective-C objects | A command line Mac program used to test overheads of using an NSMutableArray as a FIFO queue in different ways. |
FullscreenImage | Animating a window to fullscreen on the Mac | A simple Mac application which shows how to animate a window to fullscreen. |
GraphicalSubtraction | 5 ways to draw a 2D shape with a hole in CoreGraphics | A collection of different ways to draw hole in the center of an object in CoreGraphics. |
HashValue | HashValue: an object for holding MD5 and SHA hashes | A class for creating MD5 and SHA hashes easily in Cocoa. |
HiddenDrawer | Intercepting status bar touches on the iPhone | An iPhone application that uses an undocumented hack to intercept a status bar touch and display a hidden drawer. |
IconApp | Advanced drawing using AppKit | A Mac application that draws an icon similar to the Mac App Store icon, entirely in code using AppKit drawing primitives. |
iPhoneStreamingPlayer | Revisiting an old post: Streaming and playing an MP3 stream | An iPhone application that can stream and play a continuous MP3 audio stream via HTTP. |
LocalSubstitutionCache | Substituting local data for remote UIWebView requests | An iOS application that shows how to use a custom webcache to substitute local data for requests in a UIWebView. |
LinkedListCoding | Using NSKeyedArchiver to archive a C linked-list | A class for creating an NSKeyedArchive from a C linked list. |
Magic Number Machine | N/A (predates CocoaWithLove). | A free, full-featured, graphically laid out, high-precision, scientific calculator for Mac OS X 10.4 and greater. Full source-code is included with the distribution. |
MultiRowSelect | Multiple row selection and editing in a UITableView. | An iPhone application that can select multiple table rows (like the message delete interface in the iPhone Mail app). |
NameListEditor | Application Design in AppKit | A simple Mac application that I used in the post to illustrate how Model-View-Controller applies to Cocoa Mac applications. |
NewToTheStore | A Cocoa application driven by HTTP data | A Mac application which shows how to populate a table column and main window view from data fetched from an HTML page. |
NibOrNot | Load from NIB or construct views in code: which is faster? | An iPhone application that tests whether constructing a view in code or loading the view from a NIB file is faster. |
NSData_Base64 | Base64 encoding options on the Mac and iPhone | A class for encoding and decoding Base64 data. |
NSFileManager_DirectoryLocations | Finding or creating the application support directory | A category for the NSFileManager class that allows you to find or create the application support directory in a single line. |
NSHost_ThreadedAdditions | A drop-in fix for the problems with NSHost | An NSHost category which makes the class threadsafe. |
NSInvocationForwardedConstruction | Construct an NSInvocation for any message, just by sending | A class for creating an NSInvocation object simply by sending the message to the class. |
NSString+SymlinksAndAliases | Resolving a path containing a mixture of aliases and symlinks | An NSString category that can resolve paths with a blend of aliases and symlinks. |
OpenFileKiller | Invoking other processes in Cocoa | A Mac project that shows how to invoke other processes — optionally with root privileges — and get the results in a single line. The sample application can kill the processes that have opened a specific file. |
OrderedDictionary | OrderedDictionary: Subclassing a Cocoa class cluster | An NSDictionary subclass that keeps its keys in an ordered array and can rearrange as desired. |
PagingScrollView | Multiple virtual pages in a UIScrollView with just 2 child views | A sample iPhone application that shows how to maintain multiple pages in a scroll view without needing to allocate and maintain more than 2 pages at any given time. |
PhoneNumbers | Heterogeneous cells in a UITableViewController | A sample iPhone application that uses a small, self-managing CellController class to eliminate conditionals from a UITableViewController that manages different row types. The sample application shows the phone numbers in your Address Book. |
PropertyAccessors | Performance Tests: Replacing Core Data key paths | Categories on NSArray and NSSet for faster traversals of key paths in Core Data. Includes the performance tests that measure the speed difference. |
PropertyFromInstanceVariable | Instance variable to synthesized property (an Xcode user script) | A PERL script plugin for Xcode that can generate a property declaration and @synthesize statment for selected instance variables. |
Quartzeroids2 | An Asteroids-style game in CoreAnimation, Part One, Two, Three and Four. | A Mac implementation of "Asteroids" using entirely scalable vector graphics. |
RecreatedTableViewController | Recreating UITableViewController to increase code reuse | A reimplementation of UITableViewController starting with a basic UIViewController so that a single view controller could be used for either. |
RecreatingNSApplication | Demystifying NSApplication by recreating it | A Mac application that recreates (almost all of) the critical parts of NSApplication so that you can see how NSApplication works. |
RoundWindow | Drawing a custom window on Mac OS X | A simple application with an entirely custom drawn window (uses a round, gray-gradient ellipse frame). |
SelfTesting | Automated user interface testing on the iPhone | An iPhone Simulator application that can automate its own user-interface as though a user were driving it and can test that specific results are achieved after this automation. |
ShadowedTableView | Adding shadow effects to UITableView using CAGradientLayer | An iPhone application with a UITableView subclass that draws shadows under and above every section. |
Spinner | Custom build rules, generated tables and faster floating point | A variation on Apple's OpenGL sample iPhone application that uses an Xcode custom build rule to generate a lookup table to use instead of the sin function for faster trigonometry. |
Stickies | Serving an NSManagedObjectContext over an NSConnection | A Mac application which serves an NSManagedObjectContext over an NSConnection to a remote host. |
StreamingAudioPlayer | Revisiting an old post: Streaming and playing an MP3 stream | A Mac application that can stream and play a continuous MP3 audio stream via HTTP. |
SynthesizeSingleton | Singletons, AppDelegates and top-level data. | A header file that allows you to turn any class into a singleton with a single macro invocation. |
TapZoomRotate | A ZoomingViewController to animate a UIView to fullscreen | An iOS view controller that can zoom a view to fullscreen and back. |
TableDesignRevisited | UITableView construction, drawing and management (revisited) | A project that shares the code I typically use to manage UITableViews and UITableViewCells on iOS. |
TextMasking-iPhone | Creating alpha masks from text on the Mac and iPhone | A simple iPhone application that shows how to create a bitmap mask from text and use it for drawing effects. |
TextMasking-Mac | Creating alpha masks from text on the Mac and iPhone | A simple Mac application that shows how to create a bitmap mask from text and use it for drawing effects. |
TextTransfer | A simple, extensible HTTP server in Cocoa | An iPhone application that embeds an extensible HTTP server for transferring off of the iPhone via HTTP. |
ThreadingOverheads | The overhead of spawning threads (a performance experiment) | A small Mac program that tests the relative performance of different ways of creating threads in Cocoa. |
ToneGenerator | An iOS tone generator (an introduction to AudioUnits) | An iOS application that uses an AudioUnit to play a tone and a UISlider to change the pitch while the tone continues to play. |
UncaughtExceptions | Handling unhandled exceptions and signals | A basic iPhone application that demonstrates some basic ways that you can catch exceptions and signals for debug purposes. |
WhereIsMyMac-WithUnitTests | A sample Mac application with complete unit tests | A reimplementation of my WhereIsMyMac sample Mac application with full unit tests using Test-Driven-Development. |
WhereIsMyMac | WhereIsMyMac, a Snow Leopard CoreLocation project | A sample Mac application that uses Core Location in Snow Leopard to show the Mac's current location in Google Maps. |
WhereIsMyPhone-WithUnitTests | A sample iPhone application with complete unit tests | A reimplementation of my WhereIsMyMac application for the iPhone with full unit tests using Test-Driven-Development. |
WorldTimeConverter | WorldTimeConverter: Dates and timezones in Cocoa | A Mac application that can convert a specified time in any timezone to the equivalent time in another timezone. |
XPathQuery | Using libxml2 for XML parsing and XPath queries in Cocoa | A wrapper around libxml to make full DOM based parsing and Xpath based searching easier on the iPhone. |