Как работает UILabel / UIbutton и т. Д. Даже после освобождения их из памяти? - PullRequest
0 голосов
/ 19 апреля 2011

Например:

        UILabel *lblEmail = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 70, 30)];
[lblEmail setBackgroundColor:[UIColor clearColor]];
[lblEmail setText:@"Email"];
[lblEmail setTag:1];
[contentView addSubview:lblEmail];
[lblEmail release];

В приведенном выше коде мы создаем одну UILabel и освобождаем ее, и, следовательно, больше не имеем ссылки на память, но все же она работает, пока я запускаю приложение.и мы можем изменить его значение, используя viewWithTag.Другой пример: я создаю одну кнопку и отпускаю ее, но все же в то время, когда пользователь нажимает на кнопки, она работает.

Ответы [ 5 ]

4 голосов
/ 19 апреля 2011

Вид содержимого сохранил метку / кнопку, поэтому он все еще рядом. Вы создаете его с счетом сохранения 1, добавляя его в contentView, давая ему счет хранения 2, и выпуская его, получаете счет сохранения 1. Таким образом, он все еще существует.

3 голосов
/ 19 апреля 2011

Не высвобождается из памяти. Вы просто отпускаете ваше удержание этого. Когда вы добавляете его как подпредставление contentView, оно сохраняется там внутри.

0 голосов
/ 19 апреля 2011

Прочитайте документацию Apple для addSubview.

- (void)addSubview:(UIView *)view

Представление будет добавлено. Это представление сохраняется получателем

Документация Apple для UIView

0 голосов
/ 19 апреля 2011

lblEmail будет освобожден только после того, как счетчик ссылок станет 0. Он сохраняется contentView.

0 голосов
/ 19 апреля 2011

Apple Docs сообщает - (void) addSubview: (UIView *) представление сохраняет представление и устанавливает следующий респондент представления для получателя, который является его новым суперпредставлением.

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