Блоки и объекты в Objective-C - PullRequest
1 голос
/ 04 ноября 2011

Я начал изучать, как использовать блоки / функции / лямбду в Objective-C.Но я не могу заставить его работать с объектами.Возможно, мне не хватает указателя, но он не работает, как я.Это мой код на данный момент:

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 дает мне обычный «Интерфейс не может быть статически размещен» - ошибка

Как заставить этот простой код работать, используя блоки?

Ответы [ 2 ]

6 голосов
/ 04 ноября 2011

Должно быть:

MyEventArgs *(^skapaEventArg)(Operation); 
skapaEventArg = ^(Operation a) { return [[MyEventArgs alloc] initWithOperation:a]; };
MyEventArgs *a = skapaEventArg(Add);

Обратите внимание на * в первой строке и его отсутствие во второй строке.

0 голосов
/ 04 ноября 2011
return *[[MyEventArgs alloc] initWithOperation:a];

Я думаю, что вы получаете ошибку "несовместимый тип", потому что вы возвращаете разыменованный указатель.

...