macOS-Developer-Resources icon indicating copy to clipboard operation
macOS-Developer-Resources copied to clipboard

Resources useful in learning about development for native macOS apps

A 3.5 inch floppy disk titled "Macintosh Applications"

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


Design

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.)

Jeff Nadeau [tweet 1] [tweet 2]


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.


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


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


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.


Blogroll

Sites with high quality development content, that is sometimes or always focused on the Mac:

Chat Servers

Online communities that are focused on macOS app development:

Tweeters

People on Twitter who (at least sometimes) tweet about macOS development:

Other 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.