我已经开始学习如何在Objective-C中使用块/函数/ lambda。但我不能让它与Objects一起工作。可能我错过了一些指针,但是它不起作用。 这是我目前的代码:
MyEventArgs (^skapaEventArg)(Operation);
skapaEventArg = ^(Operation a) { return *[[MyEventArgs alloc] initWithOperation:a]; };
MyEventArgs *a = skapaEventArg(Add);
但是我得到了这张照片显示的错误:
http://img18.imageshack.us/img18/7499/blocksab.png
如果我这样做
MyEventArgs a = skapaEventArg(Add);
把它放在堆栈上,Xcode给我通常的“接口不能静态分配”-error
如何使用块来使这个简单的代码工作?
答案 0 :(得分:6)
应该是:
MyEventArgs *(^skapaEventArg)(Operation);
skapaEventArg = ^(Operation a) { return [[MyEventArgs alloc] initWithOperation:a]; };
MyEventArgs *a = skapaEventArg(Add);
请注意第一行中的*
,以及第二行中缺少{{1}}。
答案 1 :(得分:0)
return *[[MyEventArgs alloc] initWithOperation:a];
我认为你得到“不兼容的类型”错误,因为你返回了解除引用的指针。