Several things here
- All your processing is done on the main thread, blocking UI update (this is why your slider is only updated at the end of your loop).
- Your logs show a reverse order as for each loop in your for statement the block is executed before your NSLog call
To solve your 1st use a dispatch_async to start running your loop in the background (thus, not blocking your UI Thread) and do the slider update in a call like
dispatch_async(dispatch_get_main_queue(), ^{
// update slider
});