I have this code of string and I have problems trying to free up memory, I have understood that only those who release it initializes and is not autorelease but I had problems with the string “end”, and as nSum release.
NSString *urlBase = [[NSString alloc] initWithFormat:@"http://service.svc/"];
NSString *op = [[NSString alloc] initWithFormat:@"op1"];
NSString * final = [urlBase stringByAppendingFormat:op];
NSString * nSum = sumTextfield.text;
final = [final stringByAppendingFormat:nSum];
//release
[ urlBase release ];
[ op release ];
//[final release]; error
//[final autorelease]; error
thank for you help.
UPDATE:
- (IBAction)mostrarOpciones {
// code (UP)
}
If you create an object using a method that begins with init, new, copy, or mutableCopy, then you own that object and are responsible for releasing it (or autoreleasing it) when you’re done with it. If you create an object using any other method, that object is autoreleased, and you don’t need to release it. In that case, you actually need to retain the object if you want to keep it around. Apple has a Memory Management Programming Guide that includes all these rules.
The code you’ve posted is actually correct. You need to release
urlBaseandopbecause you created them using a method beginning with init (initWithFormat:in this case).finalandnSumare already autoreleased for you. final was created by a method that doesn’t begin with init, new, copy or mutableCopy (in this case, the factory methodstringByAppendingFormat:). nSum was returned by a method calledtext, and you can assume that sumTextField “owns” it or has autoreleased it before returning it to you, and so you’re not responsible for releasing it.