Это потому, что вы вызываете метод пользовательского интерфейса в потоке, отличном от основного потока.
Добавьте это в свой блок:
dispatch_async(dispatch_get_main_queue(), ^{
[hv setNeedsDisplay];
});
Помните, что любой метод, работающий с элементами пользовательского интерфейса, долженвызываться из основного потока.