Xcode iPhone应用程序 - NSDate timeIntervalSinceDate问题 - 未知原因 - 请帮忙!

时间:2011-03-27 19:01:12

标签: iphone objective-c xcode nsdate nstimeinterval

来自viewcontroller.m文件

-(void) hitButton
{
    current = [NSDate date];

    interval = [current timeIntervalSinceDate:last];

    rate = 60 / (double)interval;
    last = current;

    NSString *output = [NSString stringWithFormat:@"%d bpm",rate];
    [btnout setTitle:output forState:UIControlStateNormal];
}
- (void)viewDidLoad {

    last = [[NSDate alloc] init];
    current = [[NSDate alloc] init];

    [super viewDidLoad];
}

来自Viewcontroller头文件

@interface RateAnalyserViewController : UIViewController {

double interval;
int rate;
NSDate *current;
NSDate *last;

    IBOutlet UIButton *btnhit;
    IBOutlet UIButton *btnout;
}
@property (nonatomic, retain) UIButton *btnhit;
@property (nonatomic, retain) UIButton *btnout;

-(IBAction) hitButton;

@end

您好, 我正在尝试创建一个简单的应用程序,在BPM中显示某个人按下按钮的速率。

出于某种原因,该应用程序在第一次按下时工作正常但第二次崩溃。没有例外或任何关于原因的信息。我已经使用NSLogs来验证第二次调用hitButton方法并确定程序崩溃@ current = [NSDate date]。

任何帮助将不胜感激。对不起,如果我错过了什么。是OO语言的新手。

谢谢,乔恩

2 个答案:

答案 0 :(得分:0)

我想通了..好吧,我发现其他人已经得到了答案!我需要'保留'我当前的约会对象。像这样......

current = [[NSDate date] retain];

从这个帖子得到答案..

NSDate Problem

答案 1 :(得分:0)

Jon,问题是“当前”ivar是自动释放的,所以下次运行循环旋转时,它就消失了(第一次工作会导致你对它进行alloc-init',这会创建一个保留计数为1的对象不是自动释放的)。将hitButton中的行更改为此,您将很高兴:

last = [current retain];