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
переменная, но не сам селектор.