如何从方法正确返回NSMutableString

DJY*_*Yod 1 iphone sdk objective-c nsmutablestring

我正在寻找一种很好的方法来返回由NSMutableString构造的字符串,避免泄漏:

例如:

+(NSString *)myMethod{



 NSMutableString *numberToReturn = [[NSMutableString alloc] init];
 [numberToReturn appendString:@"lorem ipsum"];


 return numberToReturn;
}
Run Code Online (Sandbox Code Playgroud)

泄漏仪器说我泄漏了这个变量.

我尝试自动释放但它崩溃我试图返回一个副本或将mutablestring复制到一个nsstring但泄漏仍然存在.

任何想法或技巧?每次用户在文本字段中键入一个值时,我都会调用此方法,因此应用程序因内存管理不良而崩溃...

谢谢

Bar*_*ark 12

你应该用-autorelease.您的方法应写为:

+ (NSString*)myMethod {
    NSMutableString *stringToReturn = [[NSMutableString alloc] init];
    [stringToReturn appendString:@"lorem ipsum"];

   return [stringToReturn autorelease];
}
Run Code Online (Sandbox Code Playgroud)

如果发生碰撞,则故障发生在其他地方.

当然,您可以使用返回已经自动释放的实例的工厂方法,将您的方法重写为

+ (NSString*)myMethod {
  NSMutableString *result = [NSMutableString string];
  [result appendString:@"lorem ipsum"];

  return result;
}
Run Code Online (Sandbox Code Playgroud)

或者更好的例子,

+ (NSString*)myMethod {
    NSMutableString *result = [NSMutableString stringWithString:@"lorem ipsum"];
    //...do something with result;
    return result;
}
Run Code Online (Sandbox Code Playgroud)

显然,如果你方法的唯一目的只是返回一个带字符串的新字符串,你可以将整个方法全部放在一起并使用,[NSMutableString stringWithString:@"lorem ipsum"]如果你真的需要一个可变字符串.