Xcode iPhone App - NSDate timeIntervalSinceDate проблема - неизвестная причина - Пожалуйста, помогите! - PullRequest
0 голосов
/ 27 марта 2011

Из файла 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

Привет, Я пытаюсь сделать простое приложение, которое отображает частоту ударов в минуту, когда кто-то нажимает кнопку.

По какой-то причине приложение отлично работает при первом нажатии, но вылетает во второй раз. Нет никаких исключений или какой-либо информации о том, почему. Я использовал NSLogs, чтобы проверить, что метод hitButton вызывается во второй раз, и установил, что программа падает @ current = [NSDate date].

Любая помощь будет оценена. Извините, если я что-то пропустил. Я новичок в ОО языках.

Спасибо, Джон

Ответы [ 2 ]

0 голосов
/ 27 марта 2011

Джон, проблема в том, что «текущий» ивар автоматически высвобождается, поэтому при следующем вращении цикла выполнения он пропадает (работает в первый раз, потому что вы выделяете его с помощью init, который создает объект с сохраняемым счетчиком 1, который не выпускается автоматически). Измените строку в hitButton на эту, и вам будет хорошо идти:

last = [current retain];
0 голосов
/ 27 марта 2011

Я понял это .. Ну, я нашел кого-то еще, кто уже получил ответ! Мне нужно было сохранить текущую дату. Вот так ..

current = [[NSDate date] retain];

Получил ответ из этой темы ..

NSDate Проблема

...