Objective C селектор управления памятью (это утечка памяти)?

- (IBAction) someButtonCall {

        if(!someCondition) {
            someButtonCallBack = @selector(someButtonCall);
            [self presentModalViewController:someController animated:YES]; 
        } else
        ...
}

//Called from someController
- (void) someControllerFinished:(BOOL) ok {
   [self dismissModalViewControllerAnimated:YES];
   if(ok) [self performSelector:someButtonCallBack];
   else ...
}

Мне интересно, продолжает ли пользователь входить в предложение! SomeCondition, если селектор просочился, назначая новый селектор каждый раз (приведенный выше код является гипотетическим, а не то, что я делаю).

Любая помощь приветствуется.

Спасибо джеймс джонс

3 ответа

Решение

Нет, это ничего не пропускает - вам не принадлежит SEL значения, возвращаемые @selector() а также sel_registerName() время выполнения Objective C делает.

Тип SEL - это просто строка C, поэтому у вас не будет утечек памяти при повторных назначениях.

Этот пример не пропускает память. @selector() оценивается во время компиляции. Вы могли бы просочиться SEL переменная, но не сам селектор.

Другие вопросы по тегам