CADisplayLink в RunLoop не вызывает обратный вызов - PullRequest
1 голос
/ 30 декабря 2011

У меня есть следующий код, который должен вызывать 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 Ответ

2 голосов
/ 21 января 2012

Возможно, вам нужно установить свойство CADisplaylink 'frameInterval':

displayLink.frameInterval = someRate (1-60);

Еще одно интересное любопытство заключается в том, что

weak private var _anim : CADisplayLink? // mysteriously does nothing

отображение ссылок по неизвестным причинам просто не запускается, если переменная слаба.

private var _anim : CADisplayLink? // rock on
...