Published: Oct 2, 2024

Reminder: Apple Watches use 32 bit pointers

Since the Series 4 was introduced in 2018, all new Apple Watches have been arm64_32. The last Apple Watch to be armv7k was the Series 3.

Source: https://forums.developer.apple.com/forums/thread/759363

What is arm64_32? It’s a 64 bit operating system that runs on 32 bit pointers.

When you test on the watchOS simulator, you’re typically going to be testing with 64-bit pointers, so you’ll get a 64 bit Int when testing in sim and a 32 bit Int when testing on hardware.

Something as simple as

print(String(Int(Date.now.timeIntervalSince1970 * 1000)))

can work fine in the simulator but causes a runtime crash on hardware. Be mindful of your use of Int and CGFloat types when deploying code to the Apple Watch.

Here’s the output of Int.max on each platform:

Simulator Hardware (oh no!)
64 bit pointers on Apple Watch simulator
32 bit pointers on Apple Watch hardware