0
我有一个UIPickerViewModel
它应该触发一个事件,当它的选定的值发生变化时,但在调用Selected
时,EventHandler
为空。代码(有些简化):在显示组件后,C#/ MonoTouch EventHandler变为null;代表失踪?
public class MyPickerViewModel: UIPickerViewModel {
public event EventHandler SelectionChanged;
public void PrintWhetherSelectionChangedIsNull() {
System.Console.WriteLine(SelectionChanged == null ? "yes" : "no");
}
public override void Selected(UIPickerView picker, int row, int comp) {
if (SelectionChanged != null) { // it always is, though
SelectionChanged(this, new EventArgs());
}
}
}
public class SomeView: UIView {
SomeView(MyPickerViewModel model) {
model.SelectionChanged += delegate(object s, EventArgs e) {
DoSomething();
}
model.PrintWhetherSelectionChangedIsNull(); // prints "no"
}
private void DoSomething() { /* never called */ }
}
我敢肯定,只有一个模型的实例,该EventHandler
为空再次成为前非空。
我猜我已经添加到EventHandler
的代表正在收集垃圾或其他东西,但这只是一个猜测。任何人都可以指出我对C#/ iOS对象生命周期的一个很好的入门知识吗?
更新:我尝试使用名为EventHandler
,视图上的实例变量,问题仍然存在。所以这不仅仅是垃圾收集问题。