NSDate timeInterval = ноль - PullRequest
       1

NSDate timeInterval = ноль

0 голосов
/ 06 июля 2010

Я пытаюсь сравнить две NSDates, одна из которых создается методом viewDidLoad, а другая - нажатием кнопки. Я хочу иметь возможность нажать кнопку и найти разницу во времени с момента запуска viewDidLoad. Я продолжаю получать разницу ноль. Есть идеи?

#import "TimeViewController.h"

id startTime;

@implementation TimeViewController
- (void)viewDidLoad {

    NSDate *startTime = [NSDate date];
    NSLog(@"startTime = %@",startTime);
}

- (IBAction)buttonPressed{

    NSDate *now = [NSDate date];
    NSLog(@"now = %@",now);
    double timeInterval = [now timeIntervalSinceDate:startTime];
    NSLog(@"time difference = %@",[NSString stringWithFormat:@"%g",timeInterval]);

}

1 Ответ

3 голосов
/ 06 июля 2010

У вас есть

id startTime;

в глобальной области видимости, а также

    NSDate *startTime = [NSDate date];

внутри viewDidLoad.Второй оператор создает локальную переменную с именем startTime, которая скрывает глобальную переменную.Используйте взамен

    startTime=[[NSDate date] retain];

.

Тем не менее, я бы предложил вам не для создания глобальной переменной.Вместо этого сделайте его переменной экземпляра и свойством:

@interface TimeViewController :NSObject{
      ....
      NSDate*startDate;
}
...
@end

и, как сказал Куби, не забудьте

-(void)dealloc{
     [startDate release];
     [super dealloc];
}

Я бы также предложил , а не использовать id для удержания известного объекта.Кто тебе это сказал?Это очень плохая практика.Даже когда вы объявляете глобальную переменную, вы должны использовать

  NSDate*startDate;

, чтобы компилятор мог предупреждать вас о неопределенных методах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...