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];