【发布时间】:2019-03-27 05:43:45
【问题描述】:
一种用于创建按钮并添加到滚动视图中的方法。
for (int i = 0; i < navTiles.Count; i++)
{
navTab = navTiles[i];
tileRow += staticheight + 15;
contentHeight = tileRow + 15;
if (navTab.IsFullTile)
{
using (var img = UIImage.FromBundle(navTab.ImageName))
{
using (var navButton = new UIButtonCustom())
{
navButton.Frame = new CGRect(15, tileRow, ScreenSize.Width - 30, staticheight);
navButton.SetImage(img, UIControlState.Normal);
navButton.TouchUpInside += NavButton_TouchUpInside;
navButton.TouchUpOutside += NavButton_TouchUpOutside;
navButton.Tag = (int)navTab.NavTabType;
//var weaks = new WeakReference(navButton);
svMainScrollView.AddSubview(navButton);
}
}
}
}
用于释放按钮内存的方法
if (disposing)
{
foreach (var obj in this.svMainScrollView.Subviews)
{
if (obj.GetType() == typeof(UIButtonCustom))
{
UIButton uIButton = (UIButtonCustom)obj;
if (uIButton.Tag == 1 || uIButton.Tag == 2 || uIButton.Tag == 3 || uIButton.Tag == 4 || uIButton.Tag == 5 || uIButton.Tag == 6)
{
uIButton.TouchUpInside -= NavButton_TouchUpInside;
uIButton.Dispose();
uIButton.RemoveFromSuperview();
uIButton = null;
Console.WriteLine("has tag");
}
else
{
Console.WriteLine("has no tag");
}
}
}
GC.SuppressFinalize(this);
}
base.Dispose(disposing)
}
但仍然没有删除内存。但每当再次创建按钮 Xamarin.ios 时增加计数 请找到附加的 Xamarin 分析器图像,您可以在其中找到 UICustombutton 计数增加以及将视图推送到另一个视图控制器时 并再次返回在分析器中推动新的视图控制器内存计数增加 帮我看看如何避免在创建新对象时增加内存计数
我正在使用 xamarin profiler 企业试用版 1.6.4.16 和快照捕获工作,只有活动对象复选框不起作用
【问题讨论】:
标签: c# ios xamarin xamarin.ios profiler