Переработка этикеток для цикла и освобождение их - PullRequest
1 голос
/ 25 марта 2012

Как правильно создать UILabel и выпустить его снова, когда я захочу использовать его повторно, пока у меня не останется записей в моем массиве?

Я хотел это:1004 *

Когда я делаю это таким образом, я получаю сбой за его освобождение.Так что я просто не выпускаю это.Работает как шарм сейчас.Конечно, это не тот путь, поэтому мне было интересно, что это такое.

Должен ли я создавать и выпускать метку для каждого элемента в массиве?Или я должен создать это вне цикла for, но выпустить это внутри?Или ...?

Заранее спасибо.

1 Ответ

0 голосов
/ 25 марта 2012

Для чего вы используете ярлык !? Если вы добавляете его в представление, то вам нужно каждый раз использовать новый экземпляр ... если вы только делаете расчеты размера или тому подобное, то вы можете использовать одну и ту же метку снова и снова.

Но хитрость заключается в инициализации вашей локальной переменной: UILabel *labelIWishToRecycle = nil;

Если вы сделали это, можно сохранить релиз (также, если реальная метка еще не была назначена). Ранее ваш указатель указывал на случайный адрес, и вы пытаетесь освободить объект по этому адресу. В большинстве случаев это будет сбой.

(Предположим, проблемный случай - это тот случай, когда количество ваших массивов равно нулю.)

...