The iPhone has only a single processor core, so the execution of any background threads (such as those used by NSOperation
) is interleaved with UI rendering and other operations. The work being done by your operation is sufficiently demanding that the CPU hasn't enough time left over to run the scrolling/rendering logic fast enough to give a smooth result. Basically, you need to do less. However, you might get some milage out of changing the thread priority of your NSOperation
instance; something like...
[myOperation setThreadPriority:0.1];
This should push the scheduler to prioritise other threads (such as the rest of your code and the UI rendering operations) over your background operation.
The other alternative is to make your scrolled rendering workloads (i.e. UITableView
cells) more efficient. For the table case, if you're using cells with many sub UIView
s you can try and replace them with cells that use i.e. just images.