UIWebView: Speicherprobleme

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UIWebView: Speicherprobleme

    Hallo allerseits!

    Mein erster Thread hier...bitte seid nett zu mir ;)

    Ich hab ein Problem mit der UIWebView, und zwar speziell mit dem anzeigen von vipano.com, einer Seite, die virtuelle Panoramas darstellt.

    1. Irgendwann bekomm ich Memory Warnings. Und zwar nicht nur in meiner Anwendung, wo ich natürlich mehrere Controller und Views habe, sondern auch in einem Testprojekt, das nur aus der UIWebView mit der obigen Seite besteht. Kann ich der UIWebView sagen, dass Sie die gecachten Daten wegschmeißen soll, oder muss ich den Speicher freigeben und wieder allozieren?
    2. Dann kommt folgende Fehlermeldung:

    Quellcode

    1. <Error>: ImageIO: JPEG Not a JPEG file: starts with 0x00 0x00

    Keine Ahnung warum, hat das mit dem cachen zu tun?
    3. Dann bekomm ich irgendwann folgenden Fehler:

    Quellcode

    1. Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[WebCoreSharedBufferData getBytes:range:]: range {0, 4000} exceeds data length 0'
    2. *** First throw call stack:
    3. (0x2e213f53 0x38a226af 0x2e213e95 0x2eb4dc31 0x2e16ca65 0x2ef4ce47 0x2ef4cd21 0x2ef68f03 0x2ef682db 0x2ef68029 0x2ef67e61 0x2ef67dcf 0x2ef6bd39 0x2ef6b813 0x2ef5471f 0x2e29b2ed 0x30635c6d 0x30635117 0x30621069 0x30620bad 0x3061d949 0x3061c051 0x38f0c297 0x38f0c09b 0x38f0cd15 0x38f0cf8d 0x39047dbf 0x39047c84)
    4. libc++abi.dylib: terminating with uncaught exception of type NSException

    Ich geh mal davon aus, dass es auch etwas mit den gecachten Daten zu tun hat. Kann es sein, dass ich ein Problem habe, wenn ich in einer WebView eine Seite online anschaue, und gleichzeitig in einem anderen Controller eine lokal gespeicherte Seite mit dem selben Inhalt?

    Ich würd mich freuen wenn Ihr mir helfen könnt!

    Liebe Grüße,
    Chris
  • Warum denkst Du, dass die Probleme etwas mit dem Cachen zu tun haben? URL-Caches, egal ob im Hauptspeicher oder persistent, sind unter Cocoa limitiert. Die werden nicht beliebig groß.

    Die beschriebenen Probleme hören sich eher so an, als ob die Webseite unsaubere oder kaputte Ressourcen ausliefert.
    „Meine Komplikation hatte eine Komplikation.“
  • Was mich immer noch nicht in Ruhe lässt ist die Tatsache, dass auf dem Simulator keine Fehlermeldung geschmissen wird, nur wenn auf das Gerät kompiliert wird. Möglicherweise ein Performance-Problem?
    UIWebView scheint ja, was die JavaScript-Performance angeht, Safari auch hinterherzuhinken.
  • Hmm der Simu kann auf mehr Leistung zurückgreifen auch ist der WebKit nicht ganz der gleiche wie im Safari (Desktop). Mach das ganze mit den Panoramas doch anders und damit Performanter und Professioneller. Ich vermute du wrapps die Internetseite in ein schnödes WebView - lass das. Ziehe die PanoramaBilder vom Server und bau das dann ein. Vorteil ist das du dann auch die Möglichkeit schaffen könntest, durch drehen des iPhones, die Ansicht im Panorama zu ändern.

    Ich weiß eigentlich gar nicht wieso du da WebViews überhaupt brauchst. Machst du ne App oder nur ein verpacktes Safari???????
  • Sinn der App ist es eben, die Panoramas offline verfügbar zu machen, und das funktioniert ja. Aber es macht für die Performanz kaum nen Unterschied, ob die bilder on- oder offline liegen.
    Die App hat noch ein paar Komponenten mehr, es ist keine Ich-lade-eine-Website-in-einer-Webview-App, und es wäre auch zu viel Aufwand, da was anderes zu machen also die Panoramas vom Server zu laden und dann lokal in die selbe Umgebung zu schieben.

    Was meinst du mit vom Server ziehen und einbauen? Eine eigene Panorama-Komponente bauen? Und es gibt da auch schon ne Komponente, die mit dem Gyrosensor funktioniert.
  • Ich meinte das du die Pano-Bilder vom Server herunterladen und lokal speichern um diese nicht noch mal herunter zuladen (ggbf. sollte der Server das App über geänderte / neue / gelöschte Bilder informieren). Das Pano-Bild kommt dann in ein UIImageView welches dann die neue Panoramafläche wird. Mit den Daten aus dem Gyro kann der Anwender über das Panorama navigieren.

    Ich wette mit dir (ich weiß es) das ist performanter. ;)