2009-09-23 10 views
0

Je reçois des plantages de ma vue UIDatePicker et je pense que c'est parce que je ne retiens pas la date sélectionnée par les sélecteurs. Quelqu'un peut-il me dire si cela pourrait être correct? J'ai une vue modale pour sélectionner une gamme toDate et une gamme fromDate. Ces valeurs sont transmises dans la vue modale et retirées de la vue lorsqu'elles sont ignorées. La vue possède un UIDatePicker et un bouton segmenté permettant de basculer entre les dates de début et de fin.Dois-je conserver la date d'une vue modale UIDatePicker?

Chaque fois que les commutateurs de contrôle segmentés I définissent la date des sélecteurs à la date correspondante ou à partir de. Lorsque la valeur du sélecteur change, je mets à jour les dates de ou vers les dates en conséquence. La vue se bloque après quelques commutations entre ces dates.

Je ne suis pas retenir la pickers date sélectionnée donc je devine quand je mets la valeur de la date de ramasseurs du toDate au fromDate le toDate est d'être libéré alors quand je passe le sélecteur de retour à l'toDate il va s'écraser.

De même, pour utiliser la date sélectionnée du sélecteur en dehors de la vue, la date doit-elle être conservée lorsque le sélecteur sera libéré avec la date?

Est-ce que cela a du sens pour n'importe qui?

Répondre

1

Si vous devez saisir la valeur de date d'un UIDatePicker, vous devez en effet conserver une copie si vous l'utilisez en dehors de la portée de la fonction (par exemple, sur plusieurs cycles AutoreleasePool). Obtenir la date à partir d'un UIDatePicker conservera une référence, mais il sera auto-libéré si efficacement n'est valide que jusqu'à ce que le pool autorelease soit détruit. N'oubliez pas de libérer votre référence une fois que vous avez terminé avec elle. Pour l'utiliser temporairement à l'intérieur d'une fonction, il n'est pas nécessaire de le conserver comme indiqué ci-dessus.

0

Pourquoi ne vous définissez pas une propriété de votre viewvcontroller ou une autre classe à la date que vous obtenez en utilisant:

self.date = Date;

Définissez la date comme @property avec un attribut retain. De cette façon, vous devriez être en mesure d'utiliser la date dans d'autres endroits de votre application, et il ne sera pas auto-libéré lorsque vous passez par le runloop.

+0

Si je le fais, puis dites self.date = [date du sélecteur]; alors le point de self.date point à la date de pikers et être libéré quand la date de sélecteurs est placée à une autre date. ie [sélecteur setDate: date2]; – McKay

Questions connexes