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