In siburb's answer, he correctly points out that should make sure that UI updates happen on the main thread.

But I have a secondary observation, namely that you're doing 100 updates per second, and there's no point in doing it that fast because the maximum screen refresh rate is 60 frames per second.

But mainly because I'm not sure why there wasn't a problem before. i OS 5 seems to have made the requirements for updating the UI more stringent, but only to the point of what are best practices anyway.

You could do something like: var display Link: CADisplay Link? let duration = 15.0 func start Display Link() func stop Display Link() func handle Display Link(display Link: CADisplay Link) override func view Did Appear(animated: Bool) statements in both and make sure it's hitting the code you think it is. Make sure you're scheduling the display link on the main runloop. Make sure you're not doing anything else to block the main thread.The code below was working fine before i OS 5 but with i OS 5 the progress bar is no longer displaying the new progress that is set within a loop.The code is expected to work like this: // create a progress bar UIProgress View *progress Bar = UIProgress View alloc] init With Frame: CGRect Make(cover Size X*0.25, cover Size Y - 34.0, cover Size X*0.5, 9.0)]; progress Bar.progress = 0.0; progress Bar.progress View Style = UIProgress View Style Bar; I've seen a lot of questions like this one since the i OS 5 switch, and I'm not sure why there is a problem only in i OS 5.The weird thing is that when I set a pointer on handle Progess Bar, i can see the progress increasing in debug windows, but on the simulator, nothing to see on progress bar in i OS8 & 9, do you have any idea?progress View Border = UIProgress View alloc] init]; CGAffine Transform transform = CGAffine Transform Make Scale(1.0f, 5.0f); progress View.transform = transform; [progress View set Frame: CGRect Make(0.0f,5.0f,progress View Border.width,1.0f)]; [progress View set Progress Tint Color:[UIColor white Color; [progress View set User Interaction Enabled: NO]; [progress View set Progress: 0.0f]; [progress View set Progress View Style: UIProgress View Style Bar]; [progress View set Track Tint Color:[UIColor white Color]]; [progress View Border set Hidden: YES]; [progress View Border add Subview:progress View]; [add Subview:progress View Border]; I updated my code to see if it helps, I am not sure if this is the problem.

]]

Search for uiprogressview not updating:

My guess is if you've got the index path and the download info available in the notification handler, you should be updating the progress view there, rather than reloading the table view every time. I think you're taking the wrong approach by reloading the table cell every time the delegate method gets called.