RunLoop中的CADisplayLink没有调用回调

时间:2011-12-30 15:54:58

标签: ios5 nsrunloop cadisplaylink

我有以下代码,它应该使每个帧都调用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;
当我在viewDidLoad中测试时,可以设置

文本。

似乎从未调用过drawFrame。该应用程序基于Xcode 4.2s空应用程序模板和自定义故事板文件(我之后添加它而不是在创建时选择使用故事板)。除视图控制器,视图和标签外,它是空的。

我是新手。调用[[NSRunLoop currentRunLoop]运行时] iOS 5.0模拟器根本不显示应用程序。无论如何,currentRunLoop应该是默认的主runLoop。

1 个答案:

答案 0 :(得分:2)

也许您需要设置CADisplaylink'frameInterval'属性:

displayLink.frameInterval = someRate (1-60);

另一个有趣的好奇心是

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

显示链接,由于未知原因,如果变量很弱,则不会运行。

private var _anim : CADisplayLink? // rock on