如何为(^ Something)块创建MonoTouch绑定?

时间:2012-05-18 20:05:07

标签: ios binding xamarin.ios objective-c-blocks

基本上,我正在尝试为一个块的属性创建绑定。它显示了如何在MonoTouch Documentation中执行此操作,但不是针对此特定情况。


这是我试图绑定的属性

    @property (copy) CouchDocumentPathMap documentPathMap;

CouchDocumentPathMap定义为

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

documentation中,它显示了如何继续(^)(id obj, BOOL *stop)阻止,而不是(^Something)(id someParam)阻止。

2 个答案:

答案 0 :(得分:2)

由于获取“返回”块并不是真正有用,您可以像这样绑定此属性:

delegate string CouchDocumentPathMap (string documentID);

[...] 

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

答案 1 :(得分:2)

CouchDocumentPathMap以及您所说的Something不是块签名的一部分。 CouchDocumentPathMap是类型的名称,由typedef定义的类型。如果您要编写类型本身,那将是:

NSString* (^)(NSString* documentID)

同样,可以在不使用typedef的情况下声明属性:

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

这就像你更熟悉的类型。