The delay is caused by your use of NSData *data = [NSData dataWithContentsOfURL:imageLink];
. This is synchronously downloading data from the web and blocking the main thread while that happens.
You should have the detail view controller handle an asynchronous download after it has been shown. Consider using a library like SDWebImage to make this easy. To enable this, change detail.itemImage
to set the image URL rather than the image itself and then load the image as you configure the detail view.