I'm not sure that's really fair to Obj-C. Another way to explain the differences would be to say that Obj-C comes from the Smalltalk family of OO languages and C++ comes from Simula.
Smalltalk-family languages (eg. also Ruby, Swift, etc.) have late binding: you can join up things at runtime. This is great for GUIs, many common patterns become far easier. Simula-family languages are much more rigid. Almost everything is known at compile-time, so it's safer, but the rigidity makes some things harder to implement.
Writing a GUI in plain C++ is very painful, so all toolkits (that I can think of) add a late binding mechanism. Qt, for example, has signals and slots. Seen from this angle, Obj-C is something like Qt, but with the signal/slot mechanism made part of the core language and syntax.