У меня есть приложение MonoTouch, которое, кажется, генерирует случайное исключение на устройстве:
Jan 19 11:54:31 unknown UIKitApplication:com.mycompany.myapp[0xbab7][552]
<Notice>: MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown.
Name: NSInternalInconsistencyException Reason:
Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/my-guid/MyApp.app> (loaded)' with name 'MyTableCellController' Jan 19 11:54:31 unknown UIKitApplication:com.mycompany.myapp[0xbab7][552] <Notice>:
at MonoTouch.UIKit.UIViewController.get_View () [0x00000] in <filename unknown>:0 Jan 19 11:54:31 unknown UIKitApplication:com.mycompany.myapp[0xbab7][552] <Notice>:
at MyDataSource.GetCell (MonoTouch.UIKit.UITableView tableView, MonoTouch.Foundation.NSIndexPath indexPath) [0x00000] in <filename unknown>:0 Jan 19 11:54:31 unknown UIKitApplication:com.mycompany.myapp[0xbab7][552] <Notice>:
at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00000] in <filename unknown>:0 Jan 19 11:54:31 unknown UIKitApplication:com.mycompany.myapp[0xbab7][552] <Notice>:
at MyApp.Application.Main (System.String[] args) [0x00000] in <filename unknown>:0
У меня есть UIViewController с XIB-файлом, размечающим пользовательский интерфейс.XIB настраивает пользовательский UITableViewCell с другими элементами управления и выходами и т. Д.
Вот пример метода GetCell, выдавшего ошибку:
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
MyCellController controller = null;
var cell = tableView.DequeueReusableCell (CellName);
if (cell == null)
{
controller = new MyCellController();
cell = (UITableViewCell)controller.View;
cell.Tag = _count++;
_controllers[cell.Tag] = controller;
}
else
{
controller = _controllers[cell.Tag];
}
controller.LoadStuff(_myArrayOfStuff[indexPath.Row]);
return cell;
}
Ошибка возникает в строкеcell = (UITableViewCell)controller.View
, и я предполагаю, что ошибка связана с тем, что XIB еще не загружен.
Я получил случайный сбой, который произошел на устройстве случайным образом и только при быстрой прокрутке.
Я слышал, что XIB иногда загружаются асинхронно, мой конструктор для моего UIViewController просто выглядит так:
public MyTableCellController () : base ("MyTableCellController", null)
{
}
Есть ли что-то, что я здесь не так делаю?Для этого случая может быть сложно сделать повтор.