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

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

Пример страницы, на которой это происходит: http://www.youtube. ru / user / google . Вот шаги для воспроизведения проблемы (убедитесь, что вы вставили вызовы NSLog в методы UIWebViewDelegate вашего контроллера):

  1. Загрузите указанный выше URL-адрес YouTube в UIWebView [обратите внимание, что здесь методы UIWebViewDelegate вызываются при загрузке страницы]
  2. Коснитесь категории «Загрузки» на странице.
  3. Коснитесь любого видео в этой категории [ проблема: заметили, что новая страница загружена, но ни один из делегатов 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 в функциях, когда объект копируется и когда на объект ссылаются в каждом случае вопроса (т.е. при переходе к функциям, Я использую LGPL-версию двоичных файлов Qt и Qt Creator в Windows 7 (сборка Linux работает нормально)

6
задан Raphael 3 December 2010 в 17:49
поделиться