我目前有一些代码如下所示,它们使用 Linq 为我组织一些 IEnumerables。在设备上以发布模式(iOS 5.0.1、MonoTouch 5.0.1、Mono 2.10.6.1)执行此代码时出现异常
在使用 --aot-only 运行时尝试 JIT 编译方法“System.Linq.OrderedEnumerable`1:GetEnumerator()”。
产生此错误的代码是
// List<IncidentDocument> documents is passed in
List<LibraryTableViewItemGroup> groups = new List<LibraryTableViewItemGroup>();
List<DocumentObjectType> categories = documents.Select(d=>d.Type).Distinct().OrderBy(s=>s.ToString()).ToList();
foreach(DocumentObjectType cat in categories)
{
List<IncidentDocument> catDocs = documents.Where(d => d.Type == cat).OrderBy(d => d.Name).ToList();
List<LibraryTableViewItem> catDocsTableItems = catDocs.ConvertAll(d => { return new LibraryTableViewItem{ Image = GetImageForDocument(d.Type), Title = d.Name, SubTitle = d.Description}; });
LibraryTableViewItemGroup catGroup = new LibraryTableViewItemGroup{ Name = GetCatName(cat), Footer = null, Items = catDocsTableItems };
groups.Add (catGroup);
}
此错误不会发生在用于发布|调试配置的模拟器或用于调试配置的设备上。我在 SO here和here上看到了几个类似的线程,但我不确定我是否理解它们如何在这个特定问题上适用于我。