CADisplayLink в RunLoop не вызывает обратный вызов
У меня есть следующий код, который должен вызывать drawFrame каждый кадр, но это не так:
- (void)viewDidLoad
{
[super viewDidLoad];
displayLink = [viewReference.window.screen displayLinkWithTarget:(self) selector:@selector(drawFrame)];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}
- (void) drawFrame:(CADisplayLink*)sender
{
thel.text = @"test";
}
dispayLink - это указатель на CADisplayLink. thel связан с лейблом на мой взгляд. Это представление связано с viewReference. self - это ViewController. DrawFrame объявлен
- (void) drawFrame:(CADisplayLink*)sender;
thel.text может быть установлен, когда я проверяю его в viewDidLoad.
Кажется, drawFrame никогда не вызывается. Приложение основано на пустом шаблоне приложения Xcode 4.2s с пользовательским файлом раскадровки (я добавил его позже, вместо того, чтобы выбрать использование раскадровки при создании). Он пуст, кроме контроллера вида, вида и метки.
Я новичок в этом. При вызове [[NSRunLoop currentRunLoop] run] iOS 5.0 Simulator вообще не отображает приложение. В любом случае currentRunLoop должен быть основным runLoop по умолчанию.
1 ответ
Возможно, вам нужно установить свойство CADisplaylink 'frameInterval':
displayLink.frameInterval = someRate (1-60);
Еще одно интересное любопытство заключается в том, что
weak private var _anim : CADisplayLink? // mysteriously does nothing
ссылки по неизвестным причинам просто не запускаются, если переменная слаба.
private var _anim : CADisplayLink? // rock on