2

我有以下代码应该使每一帧都调用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";
}

displayLink 是指向 CADisplayLink 的指针。在我看来,它们连接到一个标签。此视图连接到 viewReference。self 是 ViewController。声明了drawFrame

- (void) drawFrame:(CADisplayLink*)sender;

当我在 viewDidLoad 中测试时,可以设置 thel.text。

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

我是新手。当调用 [[NSRunLoop currentRunLoop] run] iOS 5.0 Simulator 根本不显示应用程序。currentRunLoop 无论如何都应该是默认的主 runLoop。

4

1 回答 1

2

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

displayLink.frameInterval = someRate (1-60);

另一个有趣的好奇心是

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

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

private var _anim : CADisplayLink? // rock on
于 2012-01-21T18:55:45.910 回答