繁体   English   中英

如何从方法正确返回NSMutableString

[英]How to return correctly a NSMutableString from a method

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

例如:

+(NSString *)myMethod{



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


 return numberToReturn;
}

泄漏仪器说我有这个变量泄漏。

我尝试了自动释放,但是崩溃了,我试图返回一个副本或将可变字符串复制到nsstring中,但仍然存在泄漏。

有任何想法或技巧吗? 每当用户在文本字段中键入一个值时,我都有一个要调用此方法的应用程序,因此由于内存管理不当而导致应用程序崩溃...

谢谢

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

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

   return [stringToReturn autorelease];
}

如果发生崩溃,则故障在其他地方。

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

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

  return result;
}

还是更好的例子

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

显然,如果您的方法的唯一目的只是返回带有字符串的新字符串,则可以避免整个方法,如果确实需要可变的字符串,则可以使用[NSMutableString stringWithString:@"lorem ipsum"]

您应该在释放字符串之前自动释放该字符串。 这就是内存管理规则所说的。 如果您的应用程序随后崩溃,则表明代码中其他地方存在错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM