这是在循环中创建/销毁字符串的正确方法吗?

fuz*_*oat 3 cocoa objective-c

只是好奇如果这是这样做的方式,只是想确保它没有泄漏,虽然我认为我只修改字符串内容.

NSMutableString *newPath = [[NSMutableString alloc] init];

for(fileName in [manager enumeratorAtPath:rootPath]){
    if ([[fileName pathExtension] isEqual:@"exr"]) {
        [fileArray addObject:fileName];

        // THIS BIT 
        [newPath setString:rootPath];
        [newPath appendString:@"/"];
        [newPath appendString:fileName];
        // HERE
        attrDir = [manager attributesOfItemAtPath:newPath error:&myError];

        fileSize = [attrDir objectForKey: @"NSFileSize"];
        NSLog(@"File: /%@ Size: %@", fileName, fileSize);
    }
}
[newPath release];
Run Code Online (Sandbox Code Playgroud)

加里

nal*_*all 7

这看起来很好泄漏.如果你正在运行Xcode 3.2,你可以使用Build-> Build&Analyzer来让Clang检查这类事情.

请记住,您只需要发布您分配,新增,复制或保留的内容.

考虑使用stringByAppendingPathComponent而不是硬编码@"/"路径分隔符.NSString有许多这样的方法专门用于处理路径.

NSString* fullPath = [rootPath stringByAppendingPathComponent:fileName];
Run Code Online (Sandbox Code Playgroud)