FMDB, как вручную выпустить строку созданную из stringForColumn - PullRequest
0 голосов
/ 22 июля 2011

Я работаю с FMDB, SQLite Wrapper для iOS.

Общая проблема:

Я читаю длинную строку (изображение в кодировке Base64)из БД, а затем отправив его в UIWebView для отображения.Когда я выскакиваю контроллер представления, сохраняющий это веб-представление (с изображением), программа неожиданно завершает работу с:

([Controller responsedsToSelector:] отправлено в освобожденный экземпляр ... кстати, я не вызываю этометод)

Ошибка возникла только тогда, когда я начал использовать большие строки .. Никогда раньше этого не происходило, что наводит меня на мысль, что это может быть связано с памятью, а строка не освобождается вObjective-c после его отправки в веб-просмотр.

Возможное решение

Я хотел бы знать, как я могу получить контроль над строкой, возвращенной из FMDB "stringForColumn"метод.Я вижу это так, что я не могу вызвать release для результирующей строки, поскольку я не создаю ее.

Я почти уверен, что мне нужно вывести эту строку из памяти сразу после ее отправки.на веб-просмотр (через stringByEvaluatingJavaScriptFromString)

Любые идеи с благодарностью, так как это настоящий пробник для меня: (

Спасибо!

1 Ответ

0 голосов
/ 25 октября 2011

если вам по какой-то причине необходимо сохранить в памяти эту строку, вы должны вызвать

yourString = [[db stringForColumn:@"foo"]retain];

с тех пор, вы несете ответственность за эту строку, и вы должны освободить ее, когда закончите с ней.

...