Я пытался сделать так, чтобы этот раздел моего пользовательского интерфейса сразу обновлялся, когда документ загружался в поле зрения. AwakeFromNib запускает вставленный код и затем запускает таймер для повторения каждые 10 секунд ...
Я загружаю хранилище по умолчанию: ~ / Movies ..., которое отображается сразу ... однако сетевое местоположение, сохраненное в документе, извлеченном из XML, кажется, появляется только после второго запуска - (void) updateDiskSpaceDisplay timer.
Я установил точки останова и знаю, что ivars, который содержит значения, которые помещаются в * fileSystemAttributes, является сетевым местоположением в тот момент, когда происходит awakeFromNib ...
Я запутался, почему это волшебно появляется после второго запуска вместо того, чтобы сразу отображать значения записи.
- (void)updateDiskSpaceDisplay
{
// Obtain information about the file system used on the selected storage path.
NSError *error = NULL;
NSDictionary *fileSystemAttributes = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[[[self settings] containerSettings] storagePath] error:&error];
if( !fileSystemAttributes ) return;
// Get the byte capacity of the drive.
long long byteCapacity = [[fileSystemAttributes objectForKey:NSFileSystemSize] unsignedLongLongValue];
// Get the number of free bytes.
long long freeBytes = [[fileSystemAttributes objectForKey:NSFileSystemFreeSize] unsignedLongLongValue];
// Update the level indicator, and the text fields to show the current information.
[totalDiskSpaceField setStringValue:[self formattedStringFromByteCount:byteCapacity]];
[totalDiskSpaceField setNeedsDisplay:YES];
[usedDiskSpaceField setStringValue:[self formattedStringFromByteCount:(byteCapacity - freeBytes)]];
[usedDiskSpaceField setNeedsDisplay:YES];
[diskSpaceIndicator setMaxValue:100];
[diskSpaceIndicator setIntValue:(((float) (byteCapacity - freeBytes) / (float) byteCapacity) * 100.0)];
[diskSpaceIndicator display:YES];
}
мысли
мой бодрствующий отNib:
- (void)awakeFromNib
{
[documentWindow setAcceptsMouseMovedEvents:YES];
[documentWindow setDelegate:self];
[self updateSettingsDisplay];
[self updateDiskSpaceDisplay];
[self setDiskSpaceUpdateTimer:[NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(updateDiskSpaceDisplay) userInfo:NULL repeats:YES]];
[self setUpClipInfoTabButtons];
[self performSelector:@selector(setupEngineController) withObject:NULL afterDelay:0.1];
}