2011-02-25 2 views

ответ

2

Я не знаю, как вы планируете подключения IBOutlet или IBAction без подложки кончика пера, но вы можете создать необходимые биты вручную.

IBActions - это всего лишь интерфейс, способный украшать контракт с селектором с реализацией. Вы можете вручную создать метод, связанный с селектором на следующем примере кода:

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

IBOutlets только интерфейс строителей способ украшения переменные экземпляра (Ивар). Ivars выставляются генератором кода monotouch в качестве свойств, поэтому мы можем лениво запросить встроенное хранилище прокси-сервера и не нужно маршалировать значение в каждой точке перехода. Вы можете вручную создать переменную экземпляра на прокси-класса на следующем примере кода:

[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); 
    } 
} 

Если вы болтаться любое состояние от объекта, который вы храните в родном поле, вам также потребуется использовать эту конструкцию, поэтому сборщик мусора видит ссылку.

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