Question

J'ai une application simple qui compte à rebours jusqu'à minuit et joue alors un bip sonore, maintes et maintes fois et clignote l'étiquette indiquant le temps. Ainsi, le clignotement de l'étiquette utilise un NSTimer, tandis que le bip sonore va sur son propre fil, de sorte que la pure fonction C (pour le système identifiant son rappel d'achèvement) peut utiliser [NSThread sleepForTimeInterval: ...]; attendre un peu entre la lecture du signal sonore d'alarme. Donc, je reçois deux messages d'erreur lors de l'exécution disant Theres pas de piscine autorelease et il va juste fuir. Son parce que dans la méthode que j'appelle dans un nouveau fil de discussion, il y a deux @ « Strings » qui sont utilisés pour créer l'ID de son système (le nom du fichier et l'extension). Est-il possible que je ne peux pas utiliser une piscine autorelease puisque ce sont les deux seules choses qui tentent toujours de l'utiliser. Merci.

Ou devrais-je utiliser deux NSTimers au lieu d'un autre thread ..?

Ben la réponse de Gottlieb avait raison, mais j'ai décidé d'utiliser un autre NSTimer place parce que j'oublié comment son pas vraiment synchronisé au moment où vous dormez le fil que l'exécution réelle du code avant qu'elle ne prenne un peu de temps. Et cela rend les choses symétriques;).

Était-ce utile?

La solution

Il suffit de créer un pool autorelease dans votre méthode de fil:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

...thread body...

[pool release];

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