Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用自定义方法的潜在内存泄漏,不';没有道理_Objective C_Ios_Cocoa Touch_Memory Management - Fatal编程技术网

Objective c 使用自定义方法的潜在内存泄漏,不';没有道理

Objective c 使用自定义方法的潜在内存泄漏,不';没有道理,objective-c,ios,cocoa-touch,memory-management,Objective C,Ios,Cocoa Touch,Memory Management,我有这个方法: -(NSString *)scrambleWordGenerator: (NSUInteger)length { NSMutableString *scrambledWord = [[NSMutableString alloc] initWithString:@""]; for (int i = 0; i < length; i++) { NSUInteger randomIndex = arc4random() % [self.arrayO

我有这个方法:

-(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;
}

不要再犯错误了

否,当您使用
alloc
时,您有责任释放它-通过
release
或通过
autorelease
将其移动到自动释放池


如果您改用
[NSString stringWithString:
,它将在自动释放池中。

否,当您使用
alloc
时,您负责释放它-通过
release
或通过
autorelease
将其移动到自动释放池中


如果您改用
[NSString stringWithString://code>,它将位于自动释放池中。

提示:您可以用
返回[finalWord autorelease]替换最后一行return
语句中显式的
autorelease
有助于提高将来的可读性,尤其是在较长的方法中。另一方面,在最初编写时,您必须确保不会将
自动删除发送到无主对象。提示:您可以将最后一行替换为
返回[finalWord autorelease]return
语句中显式的
autorelease
有助于提高将来的可读性,尤其是在较长的方法中。另一方面,您必须确保在最初编写时不会将
autorelease
发送到无主对象。
-(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;
}