我最近尝试重新编译一个在较新版本的Xamarin中工作的项目。该项目编译,但在设备上崩溃时出现无效的强制转换异常。
System.InvalidCastException:无法从源类型转换为目标类型。
崩溃发生在设计器生成的代码中:
[MonoTouch.Foundation.Connect("turnOnAnimation")]
private MonoTouch.UIKit.UIImageView turnOnAnimation {
get {
object test = this.GetNativeField ("turnOnAnimation");
**this.__mt_turnOnAnimation = ((MonoTouch.UIKit.UIImageView)(this.GetNativeField("turnOnAnimation")));**
return this.__mt_turnOnAnimation;
}
set {
this.__mt_turnOnAnimation = value;
this.SetNativeField("turnOnAnimation", value);
}
}
研究GetNativeField的返回,我似乎得到了一个UIView而不是UIImageView:
但是XIB中的插座连接到UIImageView。
据我所知,这段代码在早期版本中运行良好。在最近的版本中有什么变化,或者我应该做些不同的事情吗?
答案 0 :(得分:0)
其他测试显示:
1)运行iOS版本7.1.1的iPod touch上出现此问题
2)运行iOS 8.1(任何iOS平台)的模拟器中没有出现此问题
3)在运行8.1.2的iPhone上没有出现此问题
4)将iPod touch升级到iOS 8.1.3解决了这个问题。
我得出结论,这可能是iOS错误或当前Xamarin工具与旧版iOS之间的不兼容。