仪器报告的内存泄漏。不明白为什么



Instruments告诉我们,在创建可变字符串时,以下方法正在泄漏内存。有人能告诉我为什么吗?我在iOS 8 XCode 6.2上使用ARC。

 - (NSString *)capitalizeFirstLetter {
        if (self.length == 0) {
            return self;
        }
        NSMutableString * string = [NSMutableString stringWithString:self.lowercaseString];
        [string replaceCharactersInRange:NSMakeRange(0, 1) withString:[self substringToIndex:1].capitalizedString];
        return string;
    }

我不确定是什么导致了泄漏,但如果你只想避免它,你可以将你的方法更改为:

- (NSString *)capitalizeFirstLetter {
    if (self.length == 0) {
        return self;
    }
    return [NSString stringWithFormat:@"%@%@", [self substringToIndex:1].capitalizedString, [self substringFromIndex:1]];
}

你也可以在这里查看答案需要帮助修复内存泄漏-NSMutableString

最新更新