Ключевой момент (который вы нам не показываете): что делает «value from my db»?
Если он делает что-то вроде:
ret = [[NSString alloc] initWithString:@"something"];
тогда вы несете ответственность за освобождение объекта, но если он делает что-то вроде
ret = [NSString stringWithString:@"something"];
вам не нужно выпускать его (и, действительно, вы НЕ должны).
Поскольку ваш метод называется «get *» (а не «create *»), вам необходимо вернуть объект, которому вызывающая сторона не владеет (как правило, это означает объект с автоматическим выпуском).
Ознакомьтесь с правилами политики владения .