2010-09-22 10 views
1

J'essaie d'implémenter une technique similaire à celle de l'exemple de code ImageBrowserViewAppearance d'Apple (situé ici: http://developer.apple.com/library/mac/#samplecode/ImageBrowserViewAppearance/Introduction/Intro.html), où CALayers sont générés en plus de les éléments de IKImageBrowserView pour personnaliser les apparences des objets dans le navigateur d'image.CALayer clignotant lors de l'ajout d'un calque de premier plan aux éléments IKImageBrowserView avec garbage collection sur

Cependant, je rencontre un problème étrange lorsque j'ouvre la récupération de place, et je peux le reproduire dans l'exemple de code Apple. Il suffit d'activer Garbage Collection dans la cible et de générer et lancer l'exemple d'application ImageBrowserAppearance. Ensuite, ajoutez quelques photos au navigateur d'images en utilisant le bouton "Ajouter des photos ...".

Maintenant, cliquez sur une partie vide de IKImageBrowserView, puis cliquez et faites glisser pour commencer à sélectionner plusieurs éléments dans la vue du navigateur. Lorsque vous faites glisser la zone de sélection, vous remarquerez que parfois la superposition de broche et de brillance pour certains éléments clignote et apparaît brièvement dans le coin inférieur gauche de IKImageBrowserView. Tous les CALayers semblent le faire de temps en temps, j'ai vu la zone de glissement blanche environnante scintiller dans le coin inférieur gauche aussi. Lorsque j'imite la technique dans mon propre code, je peux aussi (sans surprise) reproduire ce scintillement de badge. Toutefois, ce problème disparaît lorsque la récupération de place est désactivée.

Quelqu'un at-il une idée de ce qui pourrait mal se passer ici? Je voudrais utiliser la collecte des ordures dans mon application en conjonction avec cette technique, mais le scintillement est un peu ennuyeux.

+0

Déposer un bug, s'il vous plaît. Attachez votre binaire et jetez le bug # ici. – bbum

Répondre

1

J'ai mis en signet this il y a quelque temps mais Apple a changé l'URL et le texte. Heureusement, je citais quand je bookmarked it:

Les API graphiques de base (Quartz 2D) voir une réduction d'environ 25% dans le dessin performances pour les applications compilées pour utiliser la collecte des ordures.

Ce texte « 25% de réduction de la performance de dessin » a été réécrite en une « légère surcharge dans l'exécution de code » et qui était 10,5. Peut-être qu'Apple l'a fixé pour 10.6. Et vous parlez de Core Animation, pas de Core Graphics. Cependant, Core Animation doit éventuellement parler à Core Graphics, et peut-être que le problème de performance n'a pas disparu, et vous êtes mordu par elle.

0

Je me suis trompé avec cela un peu et peut confirmer que je reçois le même comportement en cours d'exécution du projet avec GC activé. En fait, si vous êtes assez patient et modifiez lentement la sélection d'une image à la fois en utilisant les touches fléchées, le comportement se déclenchera et vous pourrez voir les couches d'une image dans la vue affichées dans le coin inférieur gauche. au lieu de sur le dessus de l'image. Je n'ai pas été en mesure de trouver une sorte de modèle quant à quand il arrive, ou toute relation entre quelle image est sélectionnée et quelle image a ses couches manquantes. Je suppose que pour une raison quelconque, ces couches obtiennent leur origine d'image à {0, 0}, mais si je sais pourquoi.