Селектор

Селектор является именем, используемым для выбора метода для выполнения для объекта или уникального идентификатора, заменяющего имя, когда компилируется исходный код. Селектор отдельно ничего не делает. Это просто идентифицирует метод. Единственная вещь, делающая селекторное имя метода отличающимся от простой строки, состоит в том, что компилятор удостоверяется, что селекторы уникальны. То, что делает селектор полезным, - то, что (в сочетании со временем выполнения) он действует как динамический указатель функции, для имени, автоматически указывающий на реализацию метода, подходящего для того, какой бы ни класс он используется с. Предположим, что у Вас был селектор для метода run, и классы Dog, Athlete, и ComputerSimulation (каждый из которых реализовал метод run). Селектор мог использоваться с экземпляром каждого из классов для вызова run метод — даже при том, что реализация могла бы отличаться для каждого.

Получение селектора

Скомпилированные селекторы имеют тип SEL. Существует два распространенных способа получить селектор:

  • Во время компиляции Вы используете директиву компилятора @selector.

    SEL aSelector = @selector(methodName);
  • Во время выполнения Вы используете NSSelectorFromString функция, где строка является именем метода:

    SEL aSelector = NSSelectorFromString(@"methodName");

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

Используя селектор

Можно вызвать метод с помощью селектора с performSelector: и другие похожие методы.

SEL aSelector = @selector(run);
[aDog performSelector:aSelector];
[anAthlete performSelector:aSelector];
[aComputerSimulation performSelector:aSelector];

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

Необходимые как условие статьи

Категорическое обсуждение