我目前正在努力进行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(![fileSize isEqualToString:fileSizeSrc])
来反转if()语句时,它会在启动后立即终止。
我保留了,然后在第一次出现问题后释放了字符串,因为我明白了,我必须这样做。
我希望有人可以帮助我! 非常感谢, 问候,朱利安。
答案 0 :(得分:0)
如果您不使用自动保留计数器(ios5中提供):
您需要创建一个属性来保留您的信息(简单)或自己保留。
@interface ...
{
NSString* _fileSizeSrc;
}
@property (retain)NSString* fileSizeSrc;
@end
@implementation ...
@synthesise fileSizeSrc = _fileSizeSrc;
...
@end
设置你需要写的属性:
self.fileSizeSrc = [NSString stringWithFormat:@"%llu", [fileAtts fileSize]];
还有两件事:
-(void) dealloc