ale*_*lex 1 iphone objective-c
我有一个关于retain和NSString的问题,如果我有一个返回NSString的方法,并且我将返回的NSString放在一个nsstring变量中,我必须保留或不保留?
NSString *myString = @"";
myString = [self methodWhoReturnString]; // I must do this?
myString = [[self methodWhoReturnString]retain]; // Or I must do this?
Run Code Online (Sandbox Code Playgroud)
关于内存管理的Apple开发人员文档介绍了保留/释放对象的方案.
简单地说,如果你想让琴弦粘在一起,你需要保留它直到你完成它.如果这只是当前函数的范围,你可以在不保留它的情况下离开,就像字符串已经自动释放一样(可能)它将不会被释放,直到你的函数完成并清除当前的AutoReleasePool.
请记住,NSString*实际上可能指向NSMutableString*.如果您在没有意识到的情况下通过某些其他功能更改字符串对您很重要,请务必复制它:NSString * myCopyOfString = [mystring copy];