Frage

Ist es ratsam, Ansichten in Kakao zu schaffen, die Abmessungen rund 15000 Pixel haben? (Natürlich wird nur ein kleiner Teil dieser Ansicht zu einem Zeitpunkt in einem sichtbar sein NSScrollView)

Interface Builder hat eine Grenze von 10000 Pixel. Ist das eine künstliche Einschränkung oder gibt es einen guten Grund dafür?

Soll ich nur eine große Aussicht schaffen und lassen NSScrollView/Quarz sorgen Sie sich um effizient (meine Ansicht wird programmgesteuert im Bereich angefordert in angefordertem Bereich gezogen drawRect) oder riskiere ich übermäßige Speicherverwendung und andere Probleme? (ZB OS X könnte versuchen, jederzeit die Bitmap von Whole View im Videospeicher zu zwischenspeichern?)

War es hilfreich?

Lösung

Ansichten haben keine Backing-Läden, es sei denn, sie sind auf Ebenen zurückgeschleudert. Das Fenster enthält den Backing -Speicher, daher ist die Menge an Speicher, die zur Anzeige der Ansicht verwendet wird, auf die Größe des Fensters begrenzt.

Die Antwort lautet also ja. Gehen Sie voran und machen Sie Ihre Ansichten so groß, wie Sie möchten.

(Natürlich möchten Sie die Zeichnung einschränken, die Sie in der Aussicht auf das in übergebene Rechted durchführen drawRect: Oder Sie werden viel Zeit damit verschwenden, unsichtbare Zeichnen zu machen.)

Andere Tipps

Nun, wenn Kakao versucht, die gesamte Ansicht im Speicher zu zwischenstrahlen, wäre dies ein Problem:

10000 * 10000 = 100,000,000
* 4 = 400,000,000

Das sind 400 MB in rohen RGBA -Pixeln für eines Aussicht. Wenn wir wirklich pessimistisch sein wollen, gehen Sie davon aus, dass NSView das für Sie doppelt ist. In diesem Fall verdoppelt sich Ihr Speicherverbrauch auf 800 MB.

Im schlimmsten Fall führt Ihr Benutzer Ihre App auf einem alten Mac -Mini mit 1 GB RAM aus - von dem Sie gerade 80%verwendet haben. Das System wird sicherlich vor diesem Punkt weit übergehen und sein System unerträglich langsamer machen.

Auf der anderen Seite ist es der einfachste Weg, es zu implementieren, an die ich denken kann. Ich sage also, versuche es und sehe, was Aktivitätsmonitor über Ihre Speicherverwendung sagt. Wenn es zu hoch ist, ändern Sie verschiedene Optionen der Bildlaufansicht und Clipansicht. Wenn das nicht funktioniert, kann ich mir nichts anderes vorstellen, als Ihre eigenen Scroller zu machen und es zu fälschen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top