Hey just a quick question here
When i get a IOSOperator class using my irrlicht device am i right in assuming that when the device is dropped it also drops the IOSOperator it owns which is the one im getting a pointer to?
Yes. If you want to prevent the object from being deleted, you should call grab() when you get the pointer from the device, and then call drop() when you are done with it.
This is no different from how all other IReferenceCounted derived objects behave in the Irrlicht system.