Check that your addIcon
method is always running in the main thread in your debugger. Updating ui elements on a background thread can produce the results you are seeing, and shouldn't be done that way.
Here is an example of how you could wrap your view update code so it will always run on the main thread.
dispatch_async(dispatch_get_main_queue(), ^{
//put update view code in here
});