Как избавиться от памяти UIbutton из UIScrollview в xamarin.ios - PullRequest
0 голосов
/ 27 марта 2019

метод, использованный для создания кнопки и добавленный в виде прокрутки.

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 count увеличивается, а когда вы нажимаете на другой контроллер представления и вернитесь снова, нажав на новое увеличение счетчика памяти контроллера представления в профилировщике Помогите мне, как избежать увеличения количества памяти при создании нового объекта

Я использую пробную версию профайлера xamarin Enterprise версии 1.6.4.16 и снимок экрана работает, а флажок только для живого объекта не работает

пожалуйста, найдите прикрепленный скриншот профиля xamarin enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...