RSSAmplifier

Blog

Recoursive

My name is Robin Kunde. I am a software engineering consultant currently specializing in iOS mobile development and the Swift compiler. I have worked on large e-commerce projects and mobile apps for major retailers in the past.

recoursive.comRSS feed ↗10 posts

Latest posts

How-to: Run Ren'Py-based visual novels on macOS

Ren’Py is a game engine for visual novels. Sidenote: I was going to summarize what visual novels are, but I don’t think I could do it justice. I encourage you to explore the medium (or video game genre , as Wikipedia calls it). As a popular example, the Phoenix Wright games are visual novels. Ren’Py acts as a portable runtime for the game code, which is written in Python. As such, you’d expect…

How-to: Symbolicate MetricKit Crashdiagnostics

I need to write up a whole guide, but here’s the short version: You can use a tool like MXSymbolicate to symbolicate MXCrashDiagnostic payloads, but aside from the debug symbols for the version of the app the crash came from, you’ll also want the symbols of all the system frameworks for the exact version of iOS the crash occurred on. The most straightforward way to do this, is to connect the…

SimPasteboardHelper

If you’ve been forced to run Xcode through Rosetta (for example, because a binary framework vendor has been extraordinarily slow to adopt the xcframework format or simply isn’t including the right simulator slice), you may have noticed that copy and pasting inside the simulated app isn’t working. My knowledge of macOS isn’t deep enough to say why exactly that is, but the error messages in the…

Form validation is hard

Here’s a fun bug I encountered in Apple Wallet. I invited someone as a participant for my Apple Card (essentially an authorized user). The processes for both sending this invite and accepting it are pretty slick. However, whenever they tried to accept the invite, they were greeted with this error message at the address validation step. A few notes: The error message sucks. This is sadly not…

How-to: Create compile time reminders in Xcode

Workarounds are a fact of life for programmers. You rarely have the ability to fix all the buggy code you have to work with, and even if you do, it might not be worth the time and effort to find and validate a proper fix. But while a workaround allows you to move forward quickly, it also creates a maintenance burden. Creative solutions like this are usually more fragile and will need to be…

How-to: Create a zip file on iOS using Swift without 3rd party dependencies

Getting the files your app stores on the device back out so you can look at them for debugging or similar is not as easy as it could be. There’s a number of filebrowser libraries out there, but it’s a bit overkill or occasional use and probrably not something you want to ship with your app either. Here’s how to create a zip file from any directory and move it off the device using the share sheet…

Reference: Obscure UserDefaults That Affect AppKit Behavior

Setting these UserDefaults in your app’s domain will change AppKit behavior at runtime. NSDisplayCycleLoggingEnabled (h/t @pilky ) NSTextViewAvoidLayoutWhileDrawing : Disables a fastpath that allows layout passes to happen while drawRect is being invoked. (h/t @pilky )

How-to: Disable automatically organizing files on disk after move in Xcode project

Starting with Xcode 9 or so, Xcode by default keeps the on-disk layout of a project in sync with what you see in the Project Navigator. So when you move a file from one group to another, it will be moved between the respective folders on disk as well. You can explicitly disable this behavior for a given group in a few different ways: Select “New Group without Folder” when creating a new group…

How-to: Reset Privacy Permissions in macOS

UPDATED 2023-02-12. This how-to is now out of date for macOS Big Sur and newer. I’m leaving it up for archival reasons, since I don’t have to bandwidth to bring it up-to-date at the moment (it requires a lot of reboots and messing with system files). Check out more up-to-date writeups by Glenn Fleishman and Howard Oakley . UPDATED 2022-03-22. I have not tested the TCC.db deletion procedure on…

Reference: Obscure iOS Simulator Setings

There are a number of iOS simulator settings that are either completely undocumented or only mentioned in passing in release notes, so I’ll try to put them here as I come across them in order to make easier to find. Shoutout to Twitter for surfacing them! Disabling automatic pasteboard sync h/t to @ObjCandTwits Automatically syncing the pasteboard between macOS and the simulator is a welcome…