As we know there are many libraries out there that are written in C++. Now it would be really nice & handy if we could integrate them into our iOS App. There are many blogs out there that discuss the same.
I found this particular article quite good: http://philjordan.eu/article/strategies-for-using-c++-in-objective-c-projects
The article talks about the PIMPL approach. There is another link to the same related article by the same author:http://philjordan.eu/article/mixing-objective-c-c++-and-objective-c++
The following is one approach towards integrating C++ API into your App. To make things simpler there is a lot of wrapping to do.
Declare your class in the C++ header file as is.
Now to use this class in Objective-C we need a wrapper. To create this wrapper go ahead & make a simple Objective-C class which inherits from NSObject. But once you are done making, rename the extension of the implementation file from .m to .mm, this makes it an Objective-C++ file.
In this file we will be forward declaring a struct which will eventually wrap our C++ class. Create a pointer variable of the struct to be a member of the Objective-C++ class.
Implement the struct in the .mm file to have an object to our c++ class & some member functions to access it. Remember a struct is a valid “C” type. We have created an Opaque struct, but in the implementation it is ok to have member functions (which is allowed in C++). So this struct acts as a bridge between C & C++.
Once you have done this you are set.
The flow for the entire code will be in the form
IOS App Code -> Your Objective-C++ Wrapper -> Your struct wrapper -> Your C++ class in the header file
All the transactions will always go through the 2 wrappers.
In the next part I will put some sample code to give a better idea of what is happening.