小编Z.O*_*.O.的帖子

NSTimer vs CACurrentMediaTime()

所以我正处于我的第一个iOS游戏之中,并且正在努力寻找如何整合对象移动的最佳方法.

游戏在很大程度上依赖于快速移动的对象和持续快速的用户输入变化.因此,我试图让对象集成和约束求解器尽可能快速准确地运行(以最小化连续游戏循环调用之间的用户输入变化).

更具体地说,我不确定NSTimer类和CACurrentMediaTime()函数的功能.很难根据经验进行测试,因为我不确定哪个有更大的错误.例如,使用重复间隔为0.008(~2updates /屏幕刷新)的NSTimer并在连续调用时调用CACurrentMediaTime(),我发现调用之间的时间间隔在0.0075 - 0.009之间变化.很难说哪个是(小)不一致的原因.因此,我应该确定时间步长:

  1. 假设NSTimer足够准确,可以使用NSTimer时间间隔作为游戏循环时间步长

  2. 使用CACurrentMediaTime()来确定连续游戏循环调用之间的时间间隔.

学生和所有这一切的新手 - 请好!:)非常感谢任何建议.谢谢你的时间.

nstimer game-engine ios

22
推荐指数
1
解决办法
9232
查看次数

ARC存储器泄漏

+(void)setup {
    UIImage* spriteSheet = [UIImage imageNamed:@"mySpriteSheet.png"];
    CGRect rect;
    animation = [NSMutableArray arrayWithCapacity:numberOfFramesInSpriteSheet];
    int frameCount = 0;

    for (int row = 0; row < numberFrameRowsInSpriteSheet; row++) {
        for (int col = 0; col < numberFrameColsInSpriteSheet; col++) {
            frameCount++;
            if (frameCount <= numberOfFramesInSpriteSheet) {
                rect = CGRectMake(col*frameHeight, row*frameWidth, frameHeight, frameWidth);
                [animation addObject:[UIImage imageWithCGImage:CGImageCreateWithImageInRect(spriteSheet.CGImage, rect)] ];
            }
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

在启用ARC的情况下编译上面的代码.Analyze工具报告可能的内存泄漏,因为imageWithCGImage ::返回带有count +1的UIImage,然后引用丢失.泄漏仪器报告根本没有内存泄漏.这里发生了什么?

此外,由于ARC禁止使用手动使用releaseect,如何修复泄漏?

感谢任何能提供任何建议的人.

memory memory-leaks objective-c ios automatic-ref-counting

7
推荐指数
1
解决办法
3355
查看次数