UIWebView: методы делегата webViewDidStartLoad / webViewDidFinishLoad не вызываются при загрузке определенных URL-адресов

У меня есть базовый веб-браузер, реализованный с использованием UIWebView . Я заметил, что для некоторых страниц не вызывается ни один из методов UIWebViewDelegate .

Пример страницы, на которой это происходит: http://www.youtube.com/user/ Google . [обратите внимание, что здесь методы UIWebViewDelegate вызываются при загрузке страницы]

  • Коснитесь категории «Загрузки» на странице.
  • Коснитесь любого видео в этой категории [ проблема: заметили, что новая страница загружена, но ни один из делегатов UIWebView не вызывается]
  • Я знаю, что это не проблема того, что делегат UIWebView не является установлен правильно, поскольку методы делегата вызываются при загрузке других ссылок (например, если вы попытаетесь щелкнуть ссылку, которая выводит вас за пределы YouTube, вы заметите, что вызываются методы делегата).

    Изначально у меня было ощущение, что это может быть связано с тем, что страница загружается с использованием AJAX, который может не вызывать метод делегата. Но затем, когда я проверил Safari iPhone, он не обнаружил этой проблемы, так что это должно быть что-то на моей стороне.

    Я также заметил, что у Three20 TTWebController точно такая же проблема, как у меня ». м, имеющий. errorInfo-> GetDescription (& description.GetBSTR ()); или: _bstr_t description; исходный объект не изменяется. Это как если бы объект был скопирован и на него нет ссылки. Тем не менее, когда я делаю это:

    SomeObject myObject = new SomeObject();
    SomeObject anotherObject = new SomeObject();
    anotherObject = myObject;
    

    ... а затем изменяю anotherObject , myObject также изменяется.

    Самый неприятный случай - это когда я пытаюсь клонировать один из моих определенных объектов:

    public class SomeObject
    {
        double value1, value2;
    
        //default constructor here
    
        public SomeObject(val1, val2)
        {
            value1 = val1;
            value2 = val2;
        }
    
        public void Clone(SomeObject thingToCopy)
        {
            this.value1 = thingToCopy.value1;
            this.value2 = thingToCopy.value2;
        }
    }
    

    когда я это делаю ...

    SomeObject obj1 = new SomeObject(1, 2);
    SomeObject obj2 = new SomeObject();
    obj2.Clone(obj1);
    

    ... obj1 , и любые модификации obj2 изменяют obj1 .

    Системные объекты, такие как int, double, string и т. Д., Похоже, всегда копируются, за исключением случая с методом клонирования, описанным выше.

    У меня вопрос, не принимая во внимание использование ключевого слова ref в функциях, когда объект копируется и когда на объект ссылаются в каждом случае вопроса (т.е. при переходе к функциям, при установке в качестве других объектов (например, первых двух приведенных выше примеров), при копировании переменных-членов, таких как третий пример и т. д.)?

    66
    задан BJ Myers 19 May 2015 в 23:21
    поделиться