gpt4 book ai didi

ios - NSTimer 崩溃断点

转载 作者:行者123 更新时间:2023-11-29 03:23:43 25 4
gpt4 key购买 nike

我无法弄清楚下面粘贴的代码有什么问题,我是通过 Todd Moore 书学习 xcode 的,这是第 2 章 - 你好乒乓球,我在 scheduledTimerWithTimeInterval 处遇到断点 1.1 崩溃。在书末定时器配置中加入]retain];但是 xcode 5 说这已经过时了。我将其修改为不保留编译,但问题是崩溃。

- (void)animate
{
_puck.center = CGPointMake(_puck.center.x + dx*speed,_puck.center.y + dy*speed);
}

- (void)start
{
if (timer == nil) {
timer = [NSTimer scheduledTimerWithTimeInterval:0.016 target:self selector:@selector(animate) userInfo:NULL repeats:YES];

}
_puck.hidden = NO;
}

最佳答案

因为您处于 ARC 设置中,自动引用计数,执行 animate/start 的对象可能不再在内存中,具体取决于其余代码的工作方式。

如果用于保留的任何对象在调用该计时器时可能不在内存中。

您可能需要快速搜索一下如何在没有自动引用计数的情况下启动项目,以便您可以更直接地按照书中的示例进行操作。

someObject = [[something alloc] init] retain];
[someObject start];

如果您没有将 someObject 存储在某个地方,那很可能是问题所在。

[编辑]

我找到了那个 Todd Moore 示例的源代码。

这些更改有望让它与 ARC 一起工作。

在 PaddlesViewController.h 中去掉这个

NSTimer *timer;

添加(靠近其他@properties)

@property (nonatomic, retain) NSTimer *timer;

在 PaddlesViewController.m 中添加(靠近其他@synthesize)

@synthesize timer;

这应该允许它在没有保留的情况下运行

关于ios - NSTimer 崩溃断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20751669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com