In my experience post-ARC almost all memory safety issues are thread-safety related.
Except ARC only works for Cocoa like classes, everything else is traditional C like memory management.
Yes, but most of the time you’re not using that in your Objective-C code.
I'd also say they are in a reasonable space in the state of the art of safety in general. While they do not make concurrency safe and Rust does, in Rust you need to use unsafe to write things like doubly-linked lists and graphs (or resort to things like indexes-in-an-array), which you can do safely in Swift and Go. So there are interesting tradeoffs all around - our industry has not found a perfect solution here yet.