├── assets
├── macintosh-applications-diskette.jpg
└── the-reels-of-gutta-percha-covered-conducting-wire-conveyed-into-tanks-at-the-works-of-the-telegraph-construction-and-maintenance-company-at-greenwich.jpg
├── LICENSE
└── README.md
/assets/macintosh-applications-diskette.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hisaac/macOS-Developer-Resources/HEAD/assets/macintosh-applications-diskette.jpg
--------------------------------------------------------------------------------
/assets/the-reels-of-gutta-percha-covered-conducting-wire-conveyed-into-tanks-at-the-works-of-the-telegraph-construction-and-maintenance-company-at-greenwich.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hisaac/macOS-Developer-Resources/HEAD/assets/the-reels-of-gutta-percha-covered-conducting-wire-conveyed-into-tanks-at-the-works-of-the-telegraph-construction-and-maintenance-company-at-greenwich.jpg
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Isaac Halvorson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](./assets/macintosh-applications-diskette.jpg)
2 |
3 | # macOS Developer Resources
4 |
5 | Resources useful in learning about development native macOS apps.
6 |
7 | ## Contributing
8 |
9 | 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.
10 |
11 | ## Table of Contents
12 |
13 | - [Topics](#topics)
14 | - [Continuous Integration / Continuous Deployment](#continuous-integration-continuous-deployment)
15 | - [Design](#design)
16 | - [Code Signing](#code-signing)
17 | - [Hardened Runtime](#hardened-runtime)
18 | - [Logging](#logging)
19 | - [Responder Chain & Key View Loop](#responder-chain--key-view-loop)
20 | - [Books](#books)
21 | - [Videos](#videos)
22 | - [Conferences](#conferences)
23 | - [Blogroll](#blogroll)
24 | - [Chat Servers](#chat-servers)
25 | - [Tweeters](#tweeters)
26 | - [Other Resources](#other-resources)
27 | - [About](#about)
28 |
29 | ---
30 |
31 | ## Topics
32 |
33 | ### Continuous Integration / Continuous Deployment
34 |
35 | - [Xcode Server and Continuous Integration Guide: About Continuous Integration in Xcode](https://developer.apple.com/library/archive/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/)
36 | - [Xcode Server API Reference](https://developer.apple.com/library/archive/documentation/Xcode/Conceptual/XcodeServerAPIReference/index.html#//apple_ref/doc/uid/TP40016472)
37 |
38 | ---
39 |
40 | ### Design
41 |
42 | - [macOS - Human Interface Guidelines (HIG)](https://developer.apple.com/design/human-interface-guidelines/macos/overview/themes/)
43 | - [Apple Design Resources](https://developer.apple.com/design/resources/)
44 | - [Human Interface Guidelines Extras](https://github.com/sindresorhus/human-interface-guidelines-extras) by [Sindre Sorhus](https://sindresorhus.com)
45 | - [Design and implement macOS document icons](https://developer.apple.com/news/?id=5i6jlf4d)
46 |
47 | #### Menu Bar Icons
48 |
49 | Some tweets from [Jeff Nadeau](https://twitter.com/jnadeau) about menu bar icon sizing and design:
50 |
51 | > You get 22pt of height (and wouldn’t want to extend into the margins except for fine details) so that seems fine.
52 | 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
53 | >
54 | > One technique is to design within a 22pt bounding box so you can pick the exact vertical bearing of your icon within the whitespace.
55 | (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.)
56 | >
57 | > — Jeff Nadeau \[[tweet 1](https://twitter.com/jnadeau/status/1346714319174606849)] \[[tweet 2](https://twitter.com/jnadeau/status/1346711906636087296)]
58 |
59 | ---
60 |
61 | ### Code Signing
62 |
63 | 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.
64 |
65 | - [Code Signing for macOS](https://wiki.lazarus.freepascal.org/Code_Signing_for_macOS)
66 | - [Notarization for macOS 10.14.5+](https://wiki.lazarus.freepascal.org/Notarization_for_macOS_10.14.5%2B)
67 | - [Apple Developer Certificates](https://wiki.lazarus.freepascal.org/Apple_Developer_Certificates) - A great reference of all the different types of certificates involved in developing for Apple platforms.
68 |
69 | ---
70 |
71 | ### Hardened Runtime
72 |
73 | - [Hardened Runtime Entitlements](https://developer.apple.com/documentation/security/hardened_runtime_entitlements)
74 |
75 | ---
76 |
77 | ### Logging
78 |
79 | - [Generating Log Messages from Your Code](https://developer.apple.com/documentation/os/logging/generating_log_messages_from_your_code)
80 |
81 | #### Making Logs Show in Console.app Correctly
82 |
83 | In order for dynamic log messages to show up in Console.app, you must use the `{public}` modifier on the value
84 |
85 | ```swift
86 | let variableToInsert = "hello"
87 |
88 | os_log(.debug, "message with variable: %@", variableToInsert) // prints: "message with variable: "
89 | os_log(.debug, "message with variable: %{public}@", variableToInsert) // prints: "message with variable: hello"
90 | ```
91 |
92 | ---
93 |
94 | ### Responder Chain & Key View Loop
95 |
96 | - [NSResponder - AppKit](https://developer.apple.com/documentation/appkit/nsresponder)
97 | - [Event Architecture - Cocoa Event Handling Guide](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW2)
98 | - [Debugging the Responder Chain | mjtsai.com](https://mjtsai.com/blog/2019/07/30/debugging-the-responder-chain/)
99 |
100 | ---
101 |
102 | ## Books
103 |
104 | - [Cocoa Programming for OS X](https://www.amazon.com/Cocoa-Programming-OS-Ranch-Guides/dp/0134076958) - Somewhat out of date, but filled with lots of essential Mac programming information, with examples in Swift
105 | - [Hacking With macOS](https://www.hackingwithswift.com/store/hacking-with-macos) - From Paul Hudson. Up to date with SwiftUI and his books recieve lifetime updates.
106 |
107 | ---
108 |
109 | ## Videos
110 |
111 | - [AppleProgramming](https://www.youtube.com/c/AppleProgramming) - by [Lucas Derraugh](https://derraugh.com)
112 |
113 | ---
114 |
115 | ## Blogroll
116 |
117 | Sites with high quality development content, that is sometimes or always focused on the Mac:
118 |
119 | - [Bitsplitting](https://bitsplitting.org) by Daniel Jalkut
120 | - [chris.eidhoff.nl](http://chris.eidhof.nl) by Chris Eidhof
121 | - [Cocoa with Love](https://www.cocoawithlove.com) by Matt Gallegher
122 | - [Hacking with Swift](https://www.hackingwithswift.com/articles) by Paul Hudson
123 | - [inessential](https://inessential.com) by Brent Simmons
124 | - [Lapcat Software](http://lapcatsoftware.com/articles/index.html) by Jeff Johnson
125 | - [LostMoa](https://lostmoa.com/blog/) by Matthaus Woolard
126 | - [mjtsai.com](https://mjtsai.com/blog/) by Michael Tsai
127 | - [NSHipster](https://nshipster.com) by Mattt
128 | - [oleb.net](https://oleb.net/blog/) by Ole Begemann
129 | - [Rambo.codes](https://rambo.codes) by Gui Rambo
130 | - [Swift by Sundell](https://www.swiftbysundell.com) by John Sundell
131 | - [TrozWare](https://troz.net) by Sarah Reichelt
132 | - [tyler.io](https://tyler.io) by Tyler Hall
133 | - [User Your Loaf](https://useyourloaf.com/blog/) by Keith Harrison
134 |
135 | ## Chat Servers
136 |
137 | Online communities that are focused on macOS app development:
138 |
139 | - [AppKit Abusers (Slack)](https://join.slack.com/t/appkit-abusers/shared_invite/zt-1q2i2n9t0-MgwJEmyl6LS17udv7s9V1w)
140 | - [Core Intuition (Slack)](http://chat.coreint.org)
141 |
142 | ## Tweeters
143 |
144 | People on Twitter who (at least sometimes) tweet about macOS development:
145 |
146 | - [@\_inside](https://twitter.com/_inside)
147 | - [@brentsimmons](https://twitter.com/brentsimmons)
148 | - [@chriseidhof](https://twitter.com/chriseidhof)
149 | - [@cocoawithlove](https://twitter.com/cocoawithlove)
150 | - [@danielpunkass](https://twitter.com/danielpunkass)
151 | - [@jnadeau](https://twitter.com/jnadeau)
152 | - [@johnsundell](https://twitter.com/johnsundell)
153 | - [@kharrison](https://twitter.com/kharrison)
154 | - [@krzyzanowskim](https://twitter.com/krzyzanowskim)
155 | - [@lapcatsoftware](https://twitter.com/lapcatsoftware)
156 | - [@macsome](https://twitter.com/macsome)
157 | - [@mattt](https://twitter.com/mattt)
158 | - [@mjtsai](https://twitter.com/mjtsai)
159 | - [@mxcl](https://twitter.com/mxcl)
160 | - [@olebegemann](https://twitter.com/olebegemann)
161 | - [@patrickwardle](https://twitter.com/patrickwardle)
162 | - [@rydermackay](https://twitter.com/rydermackay)
163 | - [@sindresorhus](https://twitter.com/sindresorhus)
164 | - [@twostraws](https://twitter.com/twostraws)
165 | - [@UINT_MIN](https://twitter.com/UINT_MIN)
166 |
167 | ## Other Resources
168 |
169 | - [lists.apple.com Mailing Lists](https://lists.apple.com/mailman/listinfo) - old school mailing lists, but sometimes the only source of good information
170 | - [Open Source Mac Apps](https://github.com/serhii-londar/open-source-mac-os-apps) - a list of open source Mac applications on GitHub for your perusal
171 | - [TIL | macOS](https://jessesquires.github.io/TIL/macos/) by [Jesse Squires](https://www.jessesquires.com) - Another great list of macOS development resources
172 |
173 | ## About
174 |
175 | This document is maintained by me, [Isaac Halvorson](https://hisaac.net). 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.
176 |
--------------------------------------------------------------------------------