Есть ли способ указать селектор без синтаксиса @selector / что происходит за кулисами с @selector - PullRequest
0 голосов
/ 03 апреля 2012

Является ли @selector удобным синтаксисом для какого-то более длинного синтаксиса C, или это «жестко запрограммированная» часть языка / компилятора Objective-C?Например, я знаю, что когда я вызываю @property, в зависимости от аргументов разный эквивалентный код Objective C «генерируется» re: getters и setters.Что происходит за кулисами с @selector?Указывает ли это сообщение Objective-C?

Ответы [ 2 ]

3 голосов
/ 03 апреля 2012

@selector() является частью языка.Он определяет литерал SEL, точно так же, как @"" определяет литерал NSString.

Следует понимать, что @selector представляет селектор, а не сообщение.Селектор это просто имя.Это всего лишь одна небольшая часть сообщения.Он даже не несет информацию о типе.

Также обратите внимание, что @property ничего не генерирует.Он просто обещает, что объект будет реагировать на один или два селектора (геттер и сеттер).Есть несколько способов выполнить этот контракт.@synthesize только один из них.Вы также можете вручную реализовать необходимые методы или использовать @dynamic, чтобы пообещать, что он будет каким-то образом обработан во время выполнения.

2 голосов
/ 03 апреля 2012

Чтобы ответить на вопрос в заголовке, NSSelectorFromString позволит вам создать селектор из NSString (вы также можете сделать обратное с NSStringFromSelector), хотя более эффективно использовать @selector.

...