Еще один вопрос управления памятью IPhone - PullRequest
1 голос
/ 05 октября 2010

Скажем, я получаю результаты из моего основного запроса данных: (это пример кода)

При нажатии кнопки происходит:

NSMutableArray *results = [[myContext executeFetchRequest:request error:&error] mutableCopy];
myObject = (MyObject *)[mutableFetchResults1 objectAtIndex:0]; // assume that there's something in there

Теперь я хочу, чтобы myObject какое-то время оставался в моей программе ... т.е. информация, содержащаяся в myObject, будет использоваться в других событиях и тому подобное. Так что я определил это в моем .h файле.

У меня вопрос, как мне управлять памятью в этом случае. Нужно ли «публиковать» результаты или myObject в какой-то момент? Instruments говорит, что это утечка ... Но вы видите здесь какие-либо проблемы?

Ответы [ 2 ]

1 голос
/ 06 октября 2010

mutableCopy (и копия) возвращает объект с счетом сохранения 1 - вы являетесь владельцем возвращенного объекта. поэтому вы должны опубликовать результаты через некоторое время.

myObject сохраняется в массиве результатов. вам не нужно явно освобождать его, поскольку вы не являетесь его владельцем.

если вас интересует только myObject, я бы сохранил его и опубликовал результаты как можно скорее.

1 голос
/ 05 октября 2010

Вы можете просто сохранить объект индекса 0 из результатов следующим образом:

myObject = [(MyObject *)[mutableFetchResults1 objectAtIndex:0] retain];

И тогда вы можете опубликовать результаты сразу после этого, myObject будет зависать. В дальнейшем вам также потребуется освободить myObject.

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