I've done extensive research on this topic, because my current project demands offline-mapping functionality.
I'll save you a lot of time by pointing you at some of the available open-source tools & projects I've found.
OpenStreetPad - https://github.com/beelsebob/OpenStreetPad/
This project is no longer maintained. However, it reads directly from osm.pbf files and renders the maps successfully. You will have to manage the size of the region you want to map, because this implementation seems to hang and eventually crash if you try to load an entire country into it. I used a 25mb osm.pbf file for a subset of the LA region and it worked great. I think the rendering engine needs optimization.
Mapsforge ported to iOS - https://github.com/medvedNick/Mapsforge_iOS
This one is faster and seems to do a better job rendering the vector data.
libosmscout - http://wiki.openstreetmap.org/wiki/Libosmscout
This is an open-source C++ library for offline rendering and routing with vector maps. It is actively maintained (see their mailing list). I had trouble getting it to compile on Mac OSX but maybe you will have better luck. Seems to be a very capable, powerful, and portable library. They've gotten it running on Fedora, Moblin, Ubuntu, Debian, Windows, Qt, and Mac OSX/iOS.
Good luck. If you achieve some kind of breakthrough using these tools, please come back and share your results. I'm working on the same stuff and I could use pointers myself.