Сохранить счет при загрузке UITableViewCell с loadNibNamed - PullRequest
0 голосов
/ 22 июля 2011

Я использую loadNibNamed:owner:options: как задокументировано Apple для загрузки пользовательского UITableViewCell из файла пера:

ItemCell *cell = (ItemCell *)[tableView dequeueReusableCellWithIdentifier:cellId];
if (cell == nil) {
    // (1)
    [[NSBundle mainBundle] loadNibNamed:@"ItemCell" owner:self options:nil];
    // (2)
    cell = self.itemCell;
    self.itemCell = nil;
    // (3)
    // code continues here
}

И объявление класса контроллера представления:

@interface MyViewController : UIViewController<UITableViewDelegate, UITableViewDataSource> {
@private
    UITableView *tableView;
    ItemCell *itemCell;
}

@property (nonatomic, retain) IBOutlet ItemCell *itemCell;

MyViewController является владельцем файла ItemCell.

Я наблюдаю следующее:

  • (1) self.itemCell Сохранение счетчика равно 0
  • (2) self.itemCell сохранить число 2
  • (3) self.itemCell сохранить значение 0
  • (3) cell сохранить число 1

Может ли кто-нибудь объяснить:

  • Почему self.itemCell сохраняет счет от 2 до 0 между (2) и (3)?
  • Почему счет сохранения cell в (3) равен 1?

Ответы [ 2 ]

3 голосов
/ 24 июля 2011

retainCount бесполезен. Не называй это.

Что касается ответа на два ваших вопроса, «подробности реализации».

Пока вы балансируете свои удержания и выпуски, ваша работа выполнена. Для объяснения того, почему счет сохранения является любым заданным абсолютным значением, потребуется доступ к реализации самих платформ.

0 голосов
/ 22 июля 2011

Упс, ошибся, в (3)

В (3) я звонил [self.itemCell retainCount], чтобы посмотреть счет удержания, но, поскольку self.itemCell уже был установлен на nil, все, что я получал, было, очевидно, 0! Не уверен, как я это пропустил ...

в (3), cell счетчик сохранения равен 1, что является нормальным (ячейка сохраняется массивом, возвращаемым loadNibNamed:owner:options:)

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