0
比較我目前用繩子在Mac OS X的NSString中的NSTimer「循環」
我想請與循環比較掙扎(在我的情況下,我選擇了一個定時器),如果一個文件改變它的大小。 要做到這一點我做了以下內容:
- (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(![fileSize isEqualToString:fileSizeSrc])
反轉if()語句它在啓動後立即終止。
我保留,然後在第一次發生問題後釋放字符串,因爲它在我身上發現,我必須這樣做。
我希望有人能幫助我! 非常感謝, 祝賀Julian。