Don't. What user would want an app that freezes while getting a location fix? It might take minutes and if your app isn't responding in seconds it will get deleted. Instead you should turn on the location manager as soon as your app starts and wait for the delegate's callback to do your next step. Until that callback comes back the user should be able to do any non-location type activities like look at the About screen or change settings. If you don't have either of those and you really want the user to be unable to do anything at all until that fix comes in, cover the screen with a UIView and put a UIProgressIndicator (the infinite spinning type not the finite bar type) in the middle with a message saying it is waiting for location data.
Also remember that some users may not grant your app location privileges, so watch for that and remove the progress indicator and tell them they need to change their settings.
Another reason for not just blocking while waiting for a fix is that your app may get pushed to the background when a phone call comes in or the user switches to another app for some reason. If your app is stuck in a tight loop at that point and too busy to respond to a request to go into the background the OS will completely kill the operation and the user will have to fully restart the app when they come back to it. All progress and changes will be lost. So in summary, do not consider blocking the main thread of your app.