About
I work as a software developer and consultant based in Melbourne, Australia.
I’ve written 201 articles on Cocoa with Love since the first in February 2008, including 49 in Swift and 152 in Objective-C.
App Architecture book
I’ve written a book with Chris Eidhof and Florian Kugler from objc.io titled App Architecture.
The book explains a range of application architectural patterns and their implementation techniques using a single example app, fully implemented in six architectural patterns that range from conventional to experimental.
You can order now from the objc.io website.
Cocoa?
The word “Cocoa” in the name of this website, referred to the AppKit/UIKit programming environments across Apple’s major platforms.
More formally, Cocoa is an Apple trademark used as a collective name for several programming frameworks. Historically, Cocoa referred to the NeXTSTEP-derived “Foundation” and “AppKit” Objective-C frameworks on macOS but the name is usually considered to include all of the frameworks in /System/Library/Frameworks
on macOS and also on iOS as “Cocoa Touch”. With SwiftUI, it appears that Cocoa will be left behind as the name of the AppKit/UIKit frameworks.
The name “Cocoa” has no direct origin in NeXTSTEP or macOS programming; it was a trademark Apple reused from an unrelated project that chose the name to imply a “child-friendly version of Java”. Of course, Java was partly inspired by NeXTSTEP’s Objective-C, making Cocoa (like everything else in programming) its own grandmother.
Cocoa with Love software license
Original code samples on any page of Cocoa with Love may be used in accordance with the following ISC-style license:
Copyright © 2008-2021 Matt Gallagher ( https://www.cocoawithlove.com ). All rights reserved.
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
The license applies to “original” (i.e. where I’m the author) “code samples” (appearing between <code></code>
tags in the page’s HTML source). This license does not apply to non-code content from Cocoa with Love – site layout, article text, artwork and logo may not be rehosted or redistributed without prior consent.
This license should appear at the top of all source code files linked on my github page. Any failure to do so is probably just an accident: let me know and I’ll fix it.
Translating articles
If you’d like to translate one or more articles from Cocoa with Love into another language and host the translated copies on your own website, I permit this provided the following conditions are met:
- The translated article must be distributed solely via the world-wide-web and access must not require payment or registration.
- On the translated article page, immediately under the article title, you must provide a clear statement that the original article is copyright Matt Gallagher and indicate the year the original article was written.
- On the translated article page, immediately under the written by Matt Gallagher credit, you must provide a clear link to the original article on Cocoa with Love.
- Content changes beyond those required for translation are not permitted within the text of the translated article.
- You must not claim to be Matt Gallagher, must not claim to be officially associated with Cocoa with Love, and must not use the Cocoa with Love logo or banner images.
Distribution without translation, or distribution as part of a paid package, or distribution via methods other than the world-wide-web, is not permitted.