0

我有一个 OpenGLES 应用程序,带有一个 CADisplayLink(在 NSRunLoopCommonModes 中添加),用于调用主循环(我在其中执行所有 OpenGL 调用)。

我添加了一个 UIScrollView,但它随机卡住了。如果我将应用程序发送到后台,当我返回时,有时它可以完美运行,而另一些则卡住(我可以移动它,但放手时它不会滑动)。

追踪问题,我注意到 UIScrollView 的内部函数 _ smoothScrollWithUpdateTime : 没有被调用。显然,它使用自己的 CADisplayLink 来获取该调用。所以我尝试添加自己的 CADisplayLink (与完成所有绘图的主要 CADisplayLink 分开),并且它也随机不被调用。这是代码:

- (void) addDisplayLink
{
    displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(loop:)];
    [displayLink setFrameInterval:1];
    [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
}

- (void) loop:(id)sender
{
    NSLog(@"Loop working!");
}

有任何想法吗?

TL/DR:我有两个 CADisplayLink,其中一个不工作。

4

0 回答 0