Objective-C是ANSI C的超集。在GNU C中,you can nest one function in another function ......就像这样......
float E(float x)
{
float F(float y) //objective-C compiler says expected ; at end of declaration
{
return x + y;
}
return F(3) + F(4);
}
是否可以在Objective-C中执行此操作?
我知道块和NSInvocation对象,它们可以模拟上面的C代码。但是你可以在Objective-C中的另一个函数的词法范围内定义一个函数吗?有点像...
-(int) outer:(int)x
{
-(int) inner:(int)y //use of undeclared identifier inner
{
return x * 3;
}
return inner(x);
}
答案 0 :(得分:4)
您不能,但您可以轻松地使用块
获得相同的行为int outer(int i)
{
int (^inner)(int) = ^(int x)
{
return x * 3;
};
return inner(i);
}
答案 1 :(得分:2)
你不能简单地因为在ObjectiveC方法中附加了类似于C ++的类,这意味着函数内部总是存在隐式self
。
你应该如何调用嵌套在另一个函数中的函数?使它成为一种类方法没有多大意义。调用它的唯一方法就是让它静止(但它似乎真的过于复杂)
如果你要使用ObjectiveC ++,你应该使用OS X上的C,C ++和ObjectiveC可用的块或像functor类似的东西。