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"]如果你真的需要一个可变字符串.