2012-05-18 4 views
1

В принципе, я пытаюсь создать привязку для свойства, которое является блоком. Он показывает, как это сделать в MonoTouch Documentation, но не для этого конкретного случая.Как создать привязку MonoTouch для блока (^ Something)?


Вот свойство Im пытается связать

@property (copy) CouchDocumentPathMap documentPathMap; 

CouchDocumentPathMap определяется как такой

typedef NSString* (^CouchDocumentPathMap)(NSString* documentID); 

В documentation, он показывает, как приступить к (^)(id obj, BOOL *stop) блока, но не для a (^Something)(id someParam) блок.

+0

Я не проверял это, но я предполагаю, что возвращаемое значение из управляемого делегата должно быть чем-то вместо void. –

ответ

2

Поскольку это не очень полезно, чтобы получить «обратно» блок, вы можете связать это свойство так:

delegate string CouchDocumentPathMap (string documentID); 

[...] 

[Export ("setDocumentPathMap:")] 
void SetDocumentPathMap (CouchDocumentPathMap handler); 
2

CouchDocumentPathMap и, в ваших терминах, то Something не являются частью блока подписи , CouchDocumentPathMap - это имя типа, тип, определяемый typedef. Если вы напишете сам тип, это было бы:

NSString* (^)(NSString* documentID) 

Кроме того, можно было бы объявлен собственностью без использования ЬурейеЕ:

@property (copy) NSString* (^documentPathMap)(NSString* documentID); 

Это так же, как тип вы больше знакомы с ,

Смежные вопросы