В настоящее время я борюсь со сравнением строк в Mac OS X
Я хочу проверить с помощью цикла (в моем случае я выбрал таймер), если файл меняет свой размер.
Для этого я делаю следующее:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
fileSize = [[NSString stringWithFormat:@""] retain];
fileSizeSrc = [[NSString stringWithFormat:@""] retain];
fileManager = [NSFileManager defaultManager];
fileAtts = [fileManager attributesOfItemAtPath:@"~/Desktop/test.txt" error:NULL];
fileSizeSrc = [NSString stringWithFormat:@"%llu", [fileAtts fileSize]];
[self startWatching:nil];
}
- (void)startWatching:(id)sender
{
timer = [NSTimer scheduledTimerWithTimeInterval:2
target:self
selector:@selector(checkForUpdates)
userInfo:nil
repeats:YES];
[timer fire];
}
- (void)checkForUpdates
{
fileAtts = [fileManager attributesOfItemAtPath:@"~/Desktop/test.txt" error:NULL];
fileSize = [NSString stringWithFormat:@"%llu", [fileAtts fileSize]];
if([fileSize isEqualToString:fileSizeSrc])
{
NSLog(@"%@", fileSize);
fileSizeSrc = [NSString stringWithFormat:@"%@", fileSizeSrc];
}
}
- (void)applicationWillTerminate:(NSNotification *)notification
{
[timer invalidate];
timer = nil;
[fileSize release];
[fileSizeSrc release];
}
Я могу только один раз проверить размер.
Поэтому, когда мой код запускается, он дает мне вывод, и через две секунды (когда селектор срабатывает во второй раз) моя программа завершается с EXC_BAD_ACCESS
И когда я пытаюсь инвертировать оператор if (), изменив на if(![fileSize isEqualToString:fileSizeSrc])
, он сразу завершается после запуска.
Я сохранил и затем выпустил строки после того, как проблема возникла в первый раз, потому что до меня дошло, что я должен это сделать.
Я надеюсь, что кто-то может мне помочь!
Большое спасибо,
Привет, Джулиан.