I’ve only been into it since ~2005 (Tiger) when Cocoa itself was quite mature, but Objective-C has gone through a great transformation over that time.
There used to be so much boilerplate in declaring and defining properties and keeping track of memory, and all that is gone now. With clang, compilation is fast and errors are descriptive.
The language has taken an interesting spot because while it’s a compiled language and interops easily with C and C++, using it actually feels more similar to C# or Ruby.
My timeline and experience is similar. Also, I started web development with Perl back in the 90s before moving onto Java prior to Objective C. When I started doing Objective C, it felt analogous to Perl 5 in some ways -- an OO language that let you peel back the covers to hack the internals when needed, mature frameworks, and an impressive community of knowledgeable graybeards. And the syntax, while powerful, is often accused of having a bit too much punctuation. :-)
Now there are many more Objective C developers, which has also led to rapid improvements in the language and a blossoming of third party frameworks.
Don't forgot about blocks, which were huge. Apple's evolution of ObjC has been very well thought out and quite impressive.
On the topic of Cocoa and ObjC generally, one thing I found strange at first that I've come to love is method names interleaved with the arguments: [someObj doStuffSomething:something frob:aFrob]; So much clearer and harder to accidentally mess up than someObj.doStuff(something, frob)