Что произойдет, если autorelease удаляется от создания клеток вЧто произойдет, если UITableViewCell не будет выпущен?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
STVCell *cell = (STVCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[STVCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
}
в этом случае, где бы я его вручную выпустил? –
Нельзя безопасно разместить его вручную, поэтому вам необходимо использовать авторекламу. Вы не можете освободить его, прежде чем вы его вернете (потому что он будет освобожден до того, как ваш собеседник получит возможность его увидеть), и как только вы вернетесь, вы не сможете узнать, когда «безопасно» вызывать выпуск. (Не говоря уже о том, где вы могли бы сохранить ссылку, чтобы вы знали, что выпустить?) Эта ситуация именно то, что «автореклама» предназначена для: когда методу необходимо вернуть ссылку на выделенное хранилище и скоро его выпустить. Используйте autorelease. –