【问题标题】:Monotouch 4: App crash on launch on iPhone device, works on simulatorMonotouch 4:在 iPhone 设备上启动时应用程序崩溃,适用于模拟器
【发布时间】:2012-01-31 22:23:06
【问题描述】:

我的设置是:

  • MonoDevelop 2.8.5
  • MonoTouch 4.0.6
  • XCode 4.2

我创建了一个单视图 iphone 项目。在模拟器和设备上都可以构建它。

现在我双击 .xib 文件,在 XCode 中添加一个 Textfield 并创建一个 outlet。没有写其他代码。

在模拟器上运行它可以完美运行。在任何 iPhone 设备上运行它都会在启动时崩溃。我设法得到以下堆栈跟踪:

System.NullReferenceException: Object reference not set to an instance of an object
  at MonoDevelop.Debugger.ObjectValueTreeView.SetValues (TreeIter parent, TreeIter it, System.String name, Mono.Debugging.Client.ObjectValue val) [0x0000d] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:640 
  at MonoDevelop.Debugger.ObjectValueTreeView.AppendValue (TreeIter parent, System.String name, Mono.Debugging.Client.ObjectValue val) [0x00034] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:627 
  at MonoDevelop.Debugger.ObjectValueTreeView.Refresh () [0x00091] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:468 
  at MonoDevelop.Debugger.ObjectValueTreeView.AddValue (Mono.Debugging.Client.ObjectValue value) [0x0000c] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:416 
  at MonoDevelop.Debugger.ExceptionCaughtDialog.Fill () [0x00084] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs:82 
  at MonoDevelop.Debugger.ExceptionCaughtDialog.<HandleExceptionChanged>m__0 (System.Object , System.EventArgs ) [0x00000] in /private/tmp/source/monodevelop/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs:63 
  at Gtk.Application+InvokeCB.Invoke () [0x00000] in <filename unknown>:0 
  at GLib.Timeout+TimeoutProxy.Handler () [0x00000] in <filename unknown>:0 

有人提到 MonotTouch 4 仅适用于 MonoDevelop 2.6。问题是自从模拟器工作以来我已经在MD 2.8.5中写了很多代码,当我回滚到MD 2.6时,项目将无法加载...

抱歉,格式缺失,我是stackoverflow的新手

感谢任何帮助。
主题

【问题讨论】:

  • 这是另一个 iPhone 的堆栈跟踪:Objective-C 异常抛出。名称:NSUnknownKeyException 原因:[ setValue:forUndefinedKey:]:此类不符合键 xxx 的键值编码。

标签: xamarin.ios


【解决方案1】:

您在 XIB 文件中有一个出口,该出口未映射到 C# 控制器中的属性。这就是美妙的class is not key value coding-compliant 消息所表明的。 Here is a link.

我建议获取最新的 MonoTouch/MonoDevelop(非测试版)和 XCode,然后找到您拥有的插座,看看哪个插座没有正确连接。

如果 XCode 不能为您设置,您可以手动设置它们,有一个简单的 [Outlet] 属性可以放在网点的属性上。查看*.designer.cs 文件中的示例。

【讨论】:

  • 感谢乔纳森的反馈。但是,我认为情况并非如此。我正在使用 Single-View iPhone 项目,我所做的只是触发 XCode,在视图上拖动一个 Textfield,然后按 ctrl-drag 创建 oulet,保存并返回 MD。现在我所拥有的只是一个中间有一个文本字段的视图,它在模拟器中正确运行,但在实际设备上立即崩溃。 Designer.cs 文件只有这个: [Outlet] MonoTouch.UIKit.UITextField testTextfield { get;放; } 任何反馈表示赞赏。
  • 我认为大多数人都需要更多信息来提供帮助。在您的static void Main 方法周围放置一个try-catch,并挂钩到AppDomain.UnhandledException 事件,将任何异常写入控制台。然后创建崩溃,在 XCode 的 Organizer 中观看控制台时,我认为您可以从中发布更好的堆栈跟踪。
  • Xamarin 支持非常友好地向我发送了 MT 4.0.7 的链接。我认为这是 MT 4.0.6 的问题。作为问题描述接受的答案通常是指您提到的问题。
猜你喜欢
  • 2011-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多