_cmd значение внутри c функций
Какое значение переменной _cmd
изменяется при доступе к нему из тела функции C-стиля?
Определяется ли это только внутри селекторов (Objective-C)?
P.S.
Этот вопрос может возникнуть из-за моего непонимания того, что _cmd
.
Я был бы очень признателен, если бы кто-нибудь предоставил мне хороший источник объяснений.
Ответы
Ответ 1
Только для Objective-C методов, поэтому вы не можете получить к нему доступ. Первые два параметра, переданные всем методам Objective-C: self
и _cmd
, то любые другие аргументы, которые принимает фактический метод. Поскольку ни self
, ни _cmd
не передаются в обычные C-функции, вы не можете получить к ним доступ.
В каждой переменной нет ничего особенного.
Ответ 2
Основное использование функции _cmd
- получить имя метода, в котором оно вызывается.
Использование _cmd с некоторыми другими функциями было написано ниже.
NSLog(@"<%@:%@:%d>", NSStringFromClass([self class]), NSStringFromSelector(_cmd), __LINE__);
Вместо вышеуказанной строки вы также можете использовать PrettyFunction
NSLog(@"%s", __PRETTY_FUNCTION__);
Ответ 3
Пожалуйста, смотрите здесь для дальнейших объяснений.
func class_addMethod(_ cls: AnyClass!,
_ name: Selector!,
_ imp: IMP!,
_ types: UnsafePointer<Int8>!) -> Bool
имп
A function which is the implementation of the new method. The function must take at least two arguments—self and _cmd.