If so how should the C++ code be prepared so it's easily consumed in Obj-C code?
Also is this a valid way of creating cross platform applications if you choose not to use GTK or Qt?
If so how should the C++ code be prepared so it's easily consumed in Obj-C code?
Also is this a valid way of creating cross platform applications if you choose not to use GTK or Qt?
Yes, it's definitely possible. It's not even all that uncommon. For example, most of WebKit is C++ code. You can use Objective-C++ to bridge between C++ and Objective-C code.
Yes, we have shipping applications built this way. We have an OS layer (Obj-C on Mac, a Combination of C++, C++/CLI and C# combination on Windows) and a shared portable layer.
One primary concern is to be disciplined in the class definitions so that OS particulars (Obj-C or C++/CLI syntax for example) does not get used in the portable/shared code.
You could create libraries to isolate code but we haven't needed to do that.
Yes, it's possible and really useful. Sometimes it would better to split you application into 2 parts: Objective-C GUI application and C/C++ daemon with business logic. It simplifies cross-platform application development process.