2017-05-19 9 views
0

平台:Visual Studio的2017年 目标:iPad的10.3XIB设计者使用过时SetNativeField/GetNativeField方法

我们有厦门国际银行与下面的代码

[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

根据this comment它可能是简单地从ConnectAttribute切换到OutletAttribute将解决双重释放导致崩溃的情况下,虽然你仍然会得到约SetNativeField的废弃警告/ GetNativeField。例如,

[Foundation.Outlet("btnCubicmeterFactor")] 
private UIKit.UIButton btnCubicmeterFactor { ...etc... } 

如果我正确读取的讨论中,问题不在于SetNativeField/GetNativeField有根本的泄漏,但只在结合ConnectAttribute使用时它们会导致双重释放。