• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
cancelPerformSelector does not work
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

cancelPerformSelector does not work


  • Subject: cancelPerformSelector does not work
  • From: "Gerriet M. Denkmann" <email@hidden>
  • Date: Thu, 22 May 2014 12:34:13 +0700

I have this code:

- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)utterance
{
	NSTimeInterval delay = 5;
	NSLog(@"%s will resume music in %g sec.",__FUNCTION__, delay );
	NSRunLoop *currentRunLoop = [ NSRunLoop currentRunLoop ];	//	not nil
	[ currentRunLoop cancelPerformSelector: @selector(resumeMusic)  target: self  argument: nil ];
	[ self performSelector: @selector(resumeMusic) withObject: nil afterDelay: delay ];
}

- (void)resumeMusic
{
	NSLog(@"%s Done!",__FUNCTION__ );
}

When I speak something 7 times I get:

12:13:56.508  -[ContentViewController speechSynthesizer:didFinishSpeechUtterance:] will resume music in 5 sec.
12:13:57.724  -[ContentViewController speechSynthesizer:didFinishSpeechUtterance:] will resume music in 5 sec.
12:13:58.908  -[ContentViewController speechSynthesizer:didFinishSpeechUtterance:] will resume music in 5 sec.
12:14:00.115  -[ContentViewController speechSynthesizer:didFinishSpeechUtterance:] will resume music in 5 sec.
12:14:01.324  -[ContentViewController speechSynthesizer:didFinishSpeechUtterance:] will resume music in 5 sec.
12:14:01.527  -[ContentViewController resumeMusic] Done!
12:14:02.520  -[ContentViewController speechSynthesizer:didFinishSpeechUtterance:] will resume music in 5 sec.
12:14:02.730  -[ContentViewController resumeMusic] Done!
12:14:03.700  -[ContentViewController speechSynthesizer:didFinishSpeechUtterance:] will resume music in 5 sec.
12:14:03.929  -[ContentViewController resumeMusic] Done!
12:14:05.126  -[ContentViewController resumeMusic] Done!
12:14:06.339  -[ContentViewController resumeMusic] Done!
12:14:07.523  -[ContentViewController resumeMusic] Done!
12:14:08.705  -[ContentViewController resumeMusic] Done!

But I would expect just to get *one* call to "resumeMusic" - 5 sec after the last call to  speechSynthesizer:didFinishSpeechUtterance:. Instead I get 7 calls - each 5 sec after the didFinishSpeechUtterance.
Seems that cancelPerformSelector has no effect at all.

What am I doing wrong?
iOS 7.1.1

Gerriet.


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: cancelPerformSelector does not work
      • From: Roland King <email@hidden>
  • Prev by Date: Re: Where are the errors in NSOSStatusErrorDomain defined?
  • Next by Date: Re: Where are the errors in NSOSStatusErrorDomain defined?
  • Previous by thread: Re: Where are the errors in NSOSStatusErrorDomain defined?
  • Next by thread: Re: cancelPerformSelector does not work
  • Index(es):
    • Date
    • Thread