Pergunta

É aconselhável criar visualizações em cacau que têm dimensões em torno de 15000 pixels? (é claro que apenas a pequena parte dessa visão será visível em um momento em um NSScrollView)

O interface Builder tem limite de 10000 pixels de tamanho. Isso é uma limitação artificial ou há uma boa razão por trás disso?

Devo apenas criar uma visão enorme e deixar NSScrollView/Quartzo se preocupa em renderizá -lo com eficiência (minha visão é desenhada programaticamente dentro da área solicitada em drawRect) ou arriscar o uso excessivo de memória e outros problemas? (Por exemplo, o OS X poderia tentar armazenar em cache o bitmap de toda a visualização na memória de vídeo a qualquer momento?)

Foi útil?

Solução

As vistas não têm lojas de apoio, a menos que estejam apoiadas em camadas. A janela é o que possui a loja de apoio; portanto, a quantidade de memória usada para exibir a exibição é limitada ao tamanho da janela.

Então a resposta é sim. Vá em frente e faça suas opiniões tão grandes quanto quiser.

(Claro, você deseja limitar o desenho que você faz na vista do retilado drawRect: Ou você estará perdendo muito tempo fazendo desenho invisível.)

Outras dicas

Bem, se o cacau tentar armazenar em cache toda a visão na memória, isso seria um problema:

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

Isso é 400 MB em pixels RGBA RAW para 1 Visão. Se queremos ser realmente pessimistas, suponha que a NSView esteja buffer duas vezes para você, nesse caso, seu uso de memória dobra para 800 MB.

Na pior das hipóteses, seu usuário está executando seu aplicativo em um Mac Mini antigo com 1 GB de RAM - dos quais você acabou de usar 80%. O sistema certamente começará a pagar antes deste ponto, tornando seu sistema insuportavelmente lento.

Por outro lado, é a maneira mais fácil de implementá -lo que eu consigo pensar, então digo que tente e veja o que o monitor de atividades diz sobre o uso da memória. Se estiver muito alto, tente alterar várias opções da visualização de rolagem e da visualização do clipe; Se isso não funcionar, não consigo pensar em mais nada além de fazer seus próprios rollers e fingir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top