平台:Visual Studio 2017 目标:iPad 10.3
我们有一个带有以下代码的Xib
[Foundation.Connect("btnCubicmeterFactor")]
private UIKit.UIButton btnCubicmeterFactor {
get {
this.__mt_btnCubicmeterFactor = ((UIKit.UIButton)(this.GetNativeField("btnCubicmeterFactor")));
return this.__mt_btnCubicmeterFactor;
}
set {
this.__mt_btnCubicmeterFactor = value;
this.SetNativeField("btnCubicmeterFactor", value);
}
}
在构建项目时,我们收到警告: 警告CS0618:'NSObject.SetNativeField(string,NSObject)'已过时:'不要使用;此API无法正确保留/释放现有/新值,因此可能会发生泄漏和/或崩溃。'
在iPad上运行应用程序时会发生崩溃。我想修复警告,但我找不到任何有关如何解决此问题的文档。 https://developer.xamarin.com/api/namespace/MonoTouch.Foundation/的文档说明了这一点,但没有指导如何解决。 有没有人遇到类似的问题,或者现在如何解决这些警告?
我们使用这些xib在运行时添加控件。
亲切的问候, 轮辋
答案 0 :(得分:0)
根据this comment,可能只是简单地从ConnectAttribute
切换到OutletAttribute
将解决导致崩溃的双重释放,尽管您仍会收到有关崩溃的弃用警告SetNativeField
/ GetNativeField
。如,
[Foundation.Outlet("btnCubicmeterFactor")]
private UIKit.UIButton btnCubicmeterFactor { ...etc... }
如果我正确阅读了讨论,问题不在于SetNativeField
/ GetNativeField
从根本上是漏洞,而只是在与ConnectAttribute
一起使用时会导致双重释放。