2012-05-18 66 views
1

基本上,我試圖創建一個屬性是一個塊的綁定。它顯示瞭如何在MonoTouch Documentation中執行此操作,但不是針對此特定情況。如何爲(^ Something)塊創建MonoTouch綁定?


這裏的物業我試着去綁定

@property (copy) CouchDocumentPathMap documentPathMap; 

CouchDocumentPathMap被定義爲這樣

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

documentation,它顯示瞭如何繼續爲(^)(id obj, BOOL *stop)塊,但不一個(^Something)(id someParam)塊。

+0

我還沒有檢查過這個,但我的猜測是,託管代理的返回值應該是Something而不是void。 –

回答

2

因爲它是不是真的有用得到「回來」的塊,可將該屬性像這樣綁定:

delegate string CouchDocumentPathMap (string documentID); 

[...] 

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

CouchDocumentPathMap,在你而言,Something是不是塊簽名的一部分。 CouchDocumentPathMap是一種類型的名稱,類型由typedef定義。如果你寫的類型本身,這將是:

NSString* (^)(NSString* documentID) 

同樣,一個本來可以宣佈的財產,而無需使用一個typedef:

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

這就像類型,你更熟悉。