I already knew Objective-C which I liked. I can't say the same for Swift though. I also decided to hunker down and build a smolll app with it for iPhone and Apple Watch.
Swift looks like it was inspired more by Objective C and Rust. Named arguments in a specific order for instance? Objective C. The little auto complete lookup in XCode still shitty. Multiple function signatures for same function name? Objective C. It has more static analysis like Rust which keeps you from running bad code. Objective C would let you send any message to an object. π I find the way you declare closures interesting. It's a like hate relationship. It's weird to see a closure signified by { [captured vars] (closure vars) in *body* }. I like and also hate it at times. It's not always clear when to capture things like "self". Enums are awesome though. Switch, for, etc. statements are good. Not always clears with for .. in ... {} on how to do certain things. Like it looks like you can use "for let ..." and use "for ... where" to add constraints. For statements overall are great.
You can't write numbers starting with a decimal point, which i ALWAYS DO and run into an error. It has to be prefixed by 0. String iteration sucks. I don't even understand why they made the choice they did. You are forced to made an extension to String to fix it. I don't like the idea where you can add a both implied and explicit named closures outside of the function call parentheses. It's confusing to follow at times especially with SwiftUI views.
SwiftUI has previews. You can literally have XCode render previews that are interact-able with different arguments. It's using a simulator to do it, but its great when you just want to test smoooollll changes like you would in Flutter. I think Flutter is still the best at it though. With Apple Watch views though, it is super useful.
Bindings, State, Environment are really useful keeping state consistent and dependency injection. I still used global variables though βΊοΈ. Lazy laze. Being able to inject data structures for all views to use with Environment is hands down the best. As a bonus, if the environment state changes, you can use bindings to listen in. Technically you can use pub/sub interfaces, but I don't like the syntax.
There's a ton I learned. I still prefer Flutter though. I have another app in the realm of Finance and Hi Stakes Game that i will work on quickly before going back to Hi Stakes Game. I've been doing badly at releasing smoool things but great at learning new things, so I'm glad to be releasing things to the App Store. Hi Stakes Game probably won't be released until next year considering some upcoming things.