嗨,我知道這個問題也許很愚蠢,但無論如何,我現在問它。如何在NSNotificationCenter事件發生後更新值?
我有這樣的功能:
- (int)getToday {
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"fa_IR"];
[dateFormatter setDateFormat:@"dd"];
int day = [[dateFormatter stringFromDate:[NSDate date]] intValue];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(handleSysTimeChanged:)
name:NSSystemClockDidChangeNotification
object:nil];
return day;
}
之後,我處理通知如下:
-(void) handleSysTimeChanged: (NSNotification*) notification
{
if (NSSystemClockDidChangeNotification) {
NSLog(@"%i", [self getToday]);
}
}
,我得到正是我想在我的NSLog的變化。但之後,我怎麼能更新我的getToday在通知發生後顯示新號碼。 我是新來的objective-c和NSNotificationCenter。所以不要生氣。
您不應該在'getToday'方法內設置通知,因爲您很可能會多次調用該方法。您只想設置一次通知。並使用'NSCalendar'和'NSDateComponents'來代替使用'NSDateFormatter'來獲取當天。 – rmaddy
我沒有明白你的意思。我曾經把通知放在我的ApplicationDidFinishLaunching中,並在AppDelegate中處理,並得到相同的結果,但我不知道如何改變我的getToday中的值。順便說一句'NSDateFormatter'對我現在的測試來說很好。 – Armin