Первые комментарии:
1) Все после возврата не будет выполнено, поэтому последние операторы to бесполезны (мертвый код).
2) Если вы не создали с помощью +alloc
, вы можете предположить, что экземпляры NSString
автоматически освобождены, поэтому вам не нужно отправлять сообщение -release
на firstString
.
Редактировать : Как отметил Питер Хоси, вы должны освободить строку, полученную -mutableCopy
.
Чтобы ответить на ваш вопрос:
-stringByAddingPercentEscapesUsingEncoding:
возвращает указатель на вновь созданный экземпляр, поэтому вы должны сохранить его.
- (NSString*)validateString
{
NSString *firstString = [NSString stringWithFormat:@"%@", self];
firstString = [firstString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSMutableString *secondString = [firstString mutableCopy];
[secondString replaceOccurrencesOfString:@"&" withString:@"%26" options:NSCaseInsensitiveSearch range:NSMakeRange([secondString length], 0)];
secondString = [NSString stringWithFormat:@"%@", secondString];
NSLog (@"%@ and %@", firstString, secondString);
[secondString release];
return secondString;
}