If you read the documentation for NSObject's 
performSelector:withObject:afterDelay it tells you which method you need to use 
to cancel it again, and it's not NSRunLoop's 
cancelPerformSelector:target:argument. 

On 22 May, 2014, at 1:34 pm, Gerriet M. Denkmann <gerr...@mdenkmann.de> wrote:

> 
> 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 (Cocoa-dev@lists.apple.com)
> 
> 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:
> https://lists.apple.com/mailman/options/cocoa-dev/rols%40rols.org
> 
> This email sent to r...@rols.org


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to