gpt4 book ai didi

objective-c - 自定义方法的潜在内存泄漏,没有意义

转载 作者:行者123 更新时间:2023-11-28 20:39:41 24 4
gpt4 key购买 nike

我有这个方法:

-(NSString *)scrambleWordGenerator: (NSUInteger)length {
NSMutableString *scrambledWord = [[NSMutableString alloc] initWithString:@""];
for (int i = 0; i < length; i++) {
NSUInteger randomIndex = arc4random() % [self.arrayOfCharacters count];
NSString *randomCharacter = [NSString stringWithString:[self.arrayOfCharacters objectAtIndex:randomIndex]];
[scrambledWord insertString:randomCharacter atIndex:i];
}
NSString *finalWord = [[NSString alloc] initWithString:scrambledWord];
[scrambledWord release];
return finalWord;
}

事实上,它工作得很好,但是在使用 Xcode 的“分析”功能时,它说 finalWord 有潜在的内存泄漏。

我想在使用预制 init 方法创建 NSString 时,字符串将被自动释放。我错过了什么?以下是错误的屏幕截图:

enter image description here

编辑

该方法现在看起来像这样:

-(NSString *)scrambleWordGenerator: (NSUInteger)length {
NSMutableString *scrambledWord = [[NSMutableString alloc] initWithString:@""];
for (int i = 0; i < length; i++) {
NSUInteger randomIndex = arc4random() % [self.arrayOfCharacters count];
NSString *randomCharacter = [NSString stringWithString:[self.arrayOfCharacters objectAtIndex:randomIndex]];
[scrambledWord insertString:randomCharacter atIndex:i];
}
NSString *finalWord = [NSString stringWithString:scrambledWord];
[scrambledWord release];
return finalWord;
}

不再有错误!

最佳答案

不,在你使用alloc的那一刻,您负责发布它 - 通过 release或者通过 autorelease 将其移动到自动释放池.

如果你使用[NSString stringWithString:],它将在自动释放池中相反。

关于objective-c - 自定义方法的潜在内存泄漏,没有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com