Depending on the size and detail of the area you could be having to churn quite a lot of data. Even though modern iPhones are pretty fast you could still find that you need to process the file for several seconds, could be 30 seconds even.
If you want an iOS app to convert geo data to shapefiles for use somewhere else I'd recommend against, it doesn't make any sense. Write a tool that can run on a server instance (too many options to mention).
GeoJson makes sense if you are downloading geo data to your app from a server. If you are going to preload the geo data you are much better preloading a sqlite file where the data has already been parsed into the correct format for use in your app.