2011-02-25 64 views

回答

2

我不知道你是怎麼打算連接一個IBOutlet或IBAction爲沒有後盾的筆尖,但您可以手動創建所需的位。

IBActions只是接口構建器與實現裝飾選擇器合同的方式。您可以手動創建綁定到一個選擇與下面的代碼示例的方法:

[Export ("someMethod:")] 
public void SomeMethod (int arg) { 
} 

IBOutlets是裝修實例變量(高德)正好接口建設者的方式。 Ivars被monodouch代碼生成器公開爲屬性,因此我們可以懶洋洋地查詢本機代理支持存儲,並且不需要在每個轉換點編組值。您可以手動創建的代理類實例變量與下面的代碼示例:

[Connect("varname")] 
private NSObject varname { 
    get { 
     return ((NSObject) (this.GetNativeField("varname"))); 
    } 
    set { 
     this.SetNativeField("varname", value); 
    } 
} 

細心的讀者會發現,MT代碼生成器生成略有不同的代碼:如果您吊着任何國家

private NSObject __mt_varname; 
[Connect("varname")] 
private NSObject varname { 
    get { 
     this.__mt_varname = ((NSObject) (this.GetNativeField("varname"))); 
      return this.__mt_varname; 
    } 
    set { 
      this.__mt_varname = value; 
     this.SetNativeField("varname", value); 
    } 
} 

關閉要存儲在本地字段中的對象,則還需要使用此構造,因此垃圾回收器會看到引用。