Итак, после бессонной ночи и 24-часовой полосы я наконец-то понял это! Был абстрактный класс, и этот класс-потомок не реализовал свой метод. Поэтому всякий раз, когда этот класс упоминается в коде, он вызывает исключение загрузки типа. В MonoDevelop не было никаких предупреждений, он хорошо скомпилирован, работает нормально, ужасно завис. Это безумие! Я реализовал переопределение для этого абстрактного метода, и вуаля, теперь он работает так, как ничего не произошло. Возможно, это ошибка MonoDevelop, но она также может быть в каком-то специальном компиляторе iPhone. Так что знайте об этом. Это упрощенная ситуация:
public abstract class Parent : UITableViewDataSource
{
..fields/constructors/methods and things
// one method overriden just fine
public override Int32 RowsInSection(UITableView tableView, Int32 section)
{
return SomeReasonableResult;
}
// other one is made abstract, and passed to descendants
public abstract override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath);
}
Теперь позже в классе потомков:
public class Child : Parent
{
// GetCell method not implemented! No error or warning in compiler, or run log!
// but when mentioned in a different class (for example) it crashes.
}
Может быть, это известное поведение или ограничение. Но все же безумие.
Я иду спать сейчас ...