Ваш код выглядит правильно с точки зрения управления памятью. Просто помните, что если у вас нет вызова метода с alloc
, new
, retain
или copy
в имени метода, вам не нужно беспокоиться об освобождении.
Одна небольшая точка - ваши первые 3 строки кода являются избыточными и неэффективными. Обычно не следует использовать initWithString
- copy
- это лучший выбор при работе с неизменяемыми объектами, поскольку за кадром метод copy
может быть заменен (менее дорогим) retain
методом. В вашем случае вам даже не нужно использовать copy
- [self replaceDynamicRegex: txtField.text]
будет иметь такой же результат. Аналогично, вместо [NSString stringWithString:[html stringByMatching:theRegex]]
вы можете просто использовать [html stringByMatching:theRegex]
(так как этот метод возвращает новую строку).
Другое примечание - html = (NSMutableString*)[html stringByReplacingOccurrencesOfRegex:currentTag withString:replacementTag]
неверно. stringByReplacingOccurrencesOfRegex:
возвращает NSString
, который не может быть приведен к NSMutableString
(вы, скорее всего, получите сбой позже, когда отправите мутирующий метод в строку). Вместо этого используйте [[html stringByReplacingOccurrencesOfRegex:currentTag withString:replacementTag] mutableCopy]