macOS-Developer-Resources
macOS-Developer-Resources copied to clipboard
Resources useful in learning about development for native macOS apps
macOS Developer Resources
Resources useful in learning about development native macOS apps.
Contributing
If you have content to add, or notice an error, please open a pull request or issue with your changes. I'd very much like for this to be a collaborative source of information.
Table of Contents
-
Topics
- Continuous Integration / Continuous Deployment
- Design
- Code Signing
- Hardened Runtime
- Logging
- Responder Chain & Key View Loop
- Books
- Videos
- Conferences
- Blogroll
- Chat Servers
- Tweeters
- Other Resources
- About
Topics
Continuous Integration / Continuous Deployment
- Xcode Server and Continuous Integration Guide: About Continuous Integration in Xcode
- Xcode Server API Reference
Design
- macOS - Human Interface Guidelines (HIG)
- Apple Design Resources
- Human Interface Guidelines Extras by Sindre Sorhus
- Design and implement macOS document icons
Menu Bar Icons
Some tweets from Jeff Nadeau about menu bar icon sizing and design:
You get 22pt of height (and wouldn’t want to extend into the margins except for fine details) so that seems fine. In Big Sur a symbol image is ideal. The size, weight, and baseline are chosen to be consistent across menu extras, and it works w/ the “bigger menu text” AX pref
One technique is to design within a 22pt bounding box so you can pick the exact vertical bearing of your icon within the whitespace. (We did this for the original Touch Bar icons. We allow “full bleed” content there, so the icons were uniformly produced in a 30pt tall canvas.)
Code Signing
Code signing is one of the most confusing and complex parts of developing for Apple platforms. Here are a few helpful guides to help make sense of the process.
- Code Signing for macOS
- Notarization for macOS 10.14.5+
- Apple Developer Certificates - A great reference of all the different types of certificates involved in developing for Apple platforms.
Hardened Runtime
Logging
Making Logs Show in Console.app Correctly
In order for dynamic log messages to show up in Console.app, you must use the {public}
modifier on the value
let variableToInsert = "hello"
os_log(.debug, "message with variable: %@", variableToInsert) // prints: "message with variable: <private>"
os_log(.debug, "message with variable: %{public}@", variableToInsert) // prints: "message with variable: hello"
Responder Chain & Key View Loop
- NSResponder - AppKit
- Event Architecture - Cocoa Event Handling Guide
- Debugging the Responder Chain | mjtsai.com
Books
- Cocoa Programming for OS X - Somewhat out of date, but filled with lots of essential Mac programming information, with examples in Swift
- Hacking With macOS - From Paul Hudson. Up to date with SwiftUI and his books recieve lifetime updates.
Videos
- AppleProgramming - by Lucas Derraugh
- Back to the Mac - Conference videos from the Back to the Mac online conference
Conferences
Back to the Mac
Back to the Mac conference where misfits, rebels, troublemakers, and the ones who think differently will share their knowledge about developing Mac apps. The conference is free. There are no registration or application fees. It is completely online as a collection of videos on our YouTube channel.
- Website: backtomac.org
- GitHub: @backtomac
- YouTube: youtube.com/channel/UCqiRMXmkXN1KDrX4WYlS5rw
- Newsletter: tinyletter.com/backtomac
Blogroll
Sites with high quality development content, that is sometimes or always focused on the Mac:
- Bitsplitting by Daniel Jalkut
- chris.eidhoff.nl by Chris Eidhof
- Cocoa with Love by Matt Gallegher
- Hacking with Swift by Paul Hudson
- inessential by Brent Simmons
- Lapcat Software by Jeff Johnson
- LostMoa by Matthaus Woolard
- mjtsai.com by Michael Tsai
- NSHipster by Mattt
- oleb.net by Ole Begemann
- Rambo.codes by Gui Rambo
- Swift by Sundell by John Sundell
- TrozWare by Sarah Reichelt
- tyler.io by Tyler Hall
- User Your Loaf by Keith Harrison
Chat Servers
Online communities that are focused on macOS app development:
Tweeters
People on Twitter who (at least sometimes) tweet about macOS development:
- @_inside
- @brentsimmons
- @chriseidhof
- @cocoawithlove
- @danielpunkass
- @jnadeau
- @johnsundell
- @kharrison
- @krzyzanowskim
- @lapcatsoftware
- @macsome
- @mattt
- @mjtsai
- @mxcl
- @olebegemann
- @patrickwardle
- @rydermackay
- @sindresorhus
- @twostraws
- @UINT_MIN
Other Resources
- lists.apple.com Mailing Lists - old school mailing lists, but sometimes the only source of good information
- Open Source Mac Apps - a list of open source Mac applications on GitHub for your perusal
- TIL | macOS by Jesse Squires - Another great list of macOS development resources
About
This document is maintained by me, Isaac Halvorson. I started this after making the jump from iOS development to macOS development, and noticing a distinct lack of good content pertaining specifically to developing for the Mac platform. After some chatter recently about this on Twitter, I figured it was high time someone started to catalog these things somewhere.