To the best of my knowledge, there wasn’t much of a difference in programming style going from GC to ARC except for a few exceptions like all those pesky CFMakeCollectable calls that ended up being no-ops anyway.
You have to add all kinds of reference qualifiers (__strong, __weak, ...).
You don't have to explicitly mark things as strong as it's the default. Having to manually break references cycles with weak pointers does make the migration not as simple as just changing the compiler flags, but I've never heard of it being all that difficult. Apple managed to migrate Xcode in a single version.
Garbage collection was deprecated almost immediately after it was released and has never been supported on iOS (which let’s be honest is the target for 95% of all cocoa developers)
Be careful, Cocoa is Mac, UIKit is iOS. Most of iOS developers have minimum Cocoa experience.
Cocoa is more fundamental and exists in both (although branded as “CocoaTouch” on iOS originally).
The UIKit analog on macOS is AppKit.
Also GC/Arc aren’t features of cocoa, but of Objective-C itself.