C# Obj-c关于函数指针

C# Obj-c关于函数指针,c#,objective-c,function,pointers,C#,Objective C,Function,Pointers,我知道块可以传递给一个实例方法,该方法可以如下编写: -(void)Method:((void) (^)(float)f) { f(0.5); } 此外,此方法也是一个有效的表达式 -(void)Method:((void) (*)(float)f) { f(0.5); } 我想知道我能传递给这个方法什么?这个有什么用 除此之外,我想知道是否有任何obj-c等价于下面的c代码?因为我想知道obj-c是否有函数指针 public static float Sum(float x

我知道块可以传递给一个实例方法,该方法可以如下编写:

-(void)Method:((void) (^)(float)f)
{
    f(0.5);
}
此外,此方法也是一个有效的表达式

-(void)Method:((void) (*)(float)f)
{
    f(0.5);
}
我想知道我能传递给这个方法什么?这个有什么用

除此之外,我想知道是否有任何obj-c等价于下面的c代码?因为我想知道obj-c是否有函数指针

public static float Sum(float x, float y)
{
    return x+y;
}
public delegate float Operation(float x, float y);
public static Main()
{
    Operation dSum = Sum;
    Console.WriteLine(dSum(0.5, 1.5));
}

这不需要Objective-C;您要做的事情可以很容易地转换为C:

static float sum(float x, float y)
{
    return x + y;
}

typedef float (*Operation)(float x, float y);

int main(int argc, char **argv)
{
    Operation dSum = sum;
    printf("%f\n", dSum(0.5, 1.5));
    return 0;
}

这一切看起来都很容易识别。

您的第二个Objective-C方法将一个C函数指针作为输入,该指针的寻址函数具有一个
浮点值,并且不返回任何内容。这与区块的情况相同:

typedef void (^ BlockType)(float);
- (void)blockMethod: (BlockType)block {
    block(1.0);
}
[obj blockMethod:aBlock];
vs


不同之处在于函数无法捕获其周围状态(函数是函数,块是块)。

我是Obj-C新手。我想知道如何将函数传递给实例方法?你能给我举个例子吗?我输入了一个函数的名称,编译器告诉我我没有声明它。还有,周边国家是什么意思?
typedef void (* FuncType)(float);
- (void)funcMethod: (FuncType)func {
    func(1.0);
}
[obj funcMethod:aFunc];