Есть ли способ передать указатель на метод Objective C, а затем этот метод модифицирует указатель функции, чтобы указать на функцию C где-нибудь еще?Изменение указателя функции, переданного методу?
Создание метода, который принимает указатель на функцию достаточно просто:
- (void)doSomethingWithFunctionPointer:(void(*)(/* args go here */))functionPointer;
можно затем вызвать эту функцию внутри doSomethingWithFunctionPointer просто позвонив по телефону:
if (functionPointer)
{
functionPointer();
}
Но что, если я на самом деле хотел изменить functionPointer указывать на что-то еще внутри doSomethingWithFunctionPointer, так что любой код вне этого метода может затем вызвать измененный указатель функции для вызова функции, которая doSomethingWithFunctionPointer указывает на это?
Я знаю, что это, вероятно, яркий пример того, как не делать ничего в Objective C (особенно учитывая, что у нас есть блоки, а что нет). На данный момент это просто любопытство. Мне кажется, что мне нужен указатель указателя на функцию, но я не уверен, как это работает, если это возможно.
Если я понял ваше дело, вы говорите об переменной типа указатель на функцию. Вы всегда можете изменить значение, указанное указателем, не так ли? –