Question

Est-il judicieux de créer dans Cocoa des vues d’environ 15 000 pixels? (Bien entendu, seule une petite partie de cette vue sera visible à la fois dans un NSScrollView )

La taille de l'interface Builder est limitée à 10 000 pixels. Est-ce une limitation artificielle ou y a-t-il une bonne raison derrière cela?

Devrais-je simplement créer une vue énorme et laisser NSScrollView / Quartz s’inquiéter de son rendu efficace (ma vue est dessinée par programme dans la zone demandée dans drawRect ) ou dois-je risquer excessivement utilisation de la mémoire et autres problèmes? (Par exemple, OS X pourrait-il essayer de mettre en mémoire cache le bitmap de la vue entière à tout moment?)

Était-ce utile?

La solution

Les sauvegardes ne sont pas sauvegardées dans les vues, sauf si elles sont sauvegardées par couches. La fenêtre est ce que le support de stockage a stocké, de sorte que la quantité de mémoire utilisée pour afficher la vue est limitée à la taille de la fenêtre.

Donc, la réponse est oui. Allez-y et faites en sorte que vos vues soient aussi grandes que vous le souhaitez.

(Bien sûr, vous voudrez limiter le dessin que vous faites dans la vue au rect droit passé dans drawRect: , sinon vous perdrez beaucoup de temps à dessiner de manière invisible.)

Autres conseils

Eh bien, si Cocoa essayait de mettre en mémoire cache la totalité de la vue, cela poserait un problème:

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

Cela correspond à 400 Mo de pixels RGBA bruts pour la vue un . Si nous voulons vraiment être pessimistes, supposons que NSView double cette mémoire pour vous, auquel cas votre utilisation de la mémoire double et atteint 800 Mo.

Dans le pire des cas, votre utilisateur exécute votre application sur un ancien Mac mini disposant de 1 Go de RAM, dont vous venez d'utiliser 80%. Le système va certainement commencer à paginer bien avant ce point, ce qui le rendra incroyablement lent.

D’un autre côté, c’est le moyen le plus simple de l’implémenter auquel je peux penser. Je vous conseille donc de l’essayer et de voir ce que Activity Monitor dit à propos de votre utilisation de la mémoire. S'il est trop élevé, essayez de modifier différentes options de la vue de défilement et de la vue des clips; si cela ne fonctionne pas, je ne peux penser qu'à autre chose que de créer vos propres scrollers et de les simuler.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top