2012-06-03 1 views
2

Я хочу сохранить время во время запуска программы глобальной переменной, когда она удовлетворяет условию if. Поэтому, когда новое время получено, оно должно храниться в глобальной переменной,Создать глобальную переменную для хранения времени из NSDate?

Здесь, в моем условии if хотите проверить?

NSDate* CurrentTime = [NSDate date]; 

// менее чем за 30 секунд

if ([CurrentTime timeIntervalSinceDate:TimeStoredinglobalvariable] < 30.0f) 
    { 
     //do something 
     //Reset the new time to 
     TimeStoredinglobalvariable = CurrentTime; 
    } 

Является ли это способ реализации, если условие можно реализовать мою задачу? И как получить эту глобальную вещь с NSdate?

Спасибо!

ответ

2

Вы можете создать метод класса с статическая переменная:

.h

@interface YourClass : NSObject 

@property (nonatomic, strong, readonly) NSDate *storedTime; 

@end 

.m

#import "YourClass.h" 

@interface YourClass() 
    @property (nonatomic, strong, readwrite) NSDate *storedTime; 
@end 

@implementation YourClass 

static NSDate *_storedTime; 

@synthesize storedTime; 

- (NSDate *)storedTime { 
    if (!_storedTime) { 
     _storedTime = [NSDate date]; 
    } 

    if ([_storedTime timeIntervalSinceNow] < -30.0f) { 
     //Do you stuff... 
     _storedTime = [NSDate date]; 
    } 

    return _storedTime; 
} 

@end 
+0

@iTucker -Спасибо за ваш ценный ответ! Но мне нужно выставить его вне класса! Так что я могу это сделать? Пожалуйста, помогите мне! :) – sam

+0

Я обновил ответ, надеюсь, он поможет – iTukker

+0

Спасибо за ур ответ! Я использовал xcode с ARC, поэтому код ur генерирует несколько ошибок при реализации, можете ли вы мне помочь? – sam

0

Вот очень основная идея хранения глобальных переменных -

В файле .h

extern NSDate myDate; 

В файле .m

NSDate myDate = XXXX; //where XXXX is the value you need 
+0

Насколько я знаю, объявляя глобальные переменные с экстерном это немного опасно и не является приемлемым способом? Любой другой способ? – sam

+0

Когда вы попробуете этот способ, как и упомянуть, я тоже получаю эту ошибку ... Тип интерфейса не может быть статически распределен. – sam

+0

@sam из того, что я знаю, люди объявляют глобальные NSString с extern – TheAmateurProgrammer