Invalid backgroundTimeRemaining value in applicationDidEnterBackground method

I am working on an Objective C project for Xcode6 beta 2 running on an iOS8 device. I am printing backgroundTimeRemaining in method: applicationDidEnterBackground .

- (void)applicationDidEnterBackground:(UIApplication *)application
{
  NSLog:(@"Background time remaining %f seconds", application.backgroundTimeRemaining);
  NSLog:(@"Background time remaining %f seconds", application.backgroundTimeRemaining);
  NSLog:(@"Background time remaining %f seconds", application.backgroundTimeRemaining);
}

      

The results I got were:

179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 seconds

9.995252 seconds

9.991967 seconds

Why is he displaying this great value in the first journal (1797693 ...)?

thank

+4


source to share


2 answers


I came across a quick and dirty fix that seems to work. Make the thread sleep a bit before asking for applicationTimeRemaning:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
  [NSThread sleepForTimeInterval:.01];
  NSLog:(@"Background time remaining %f seconds", application.backgroundTimeRemaining);
}

      



But this is obviously not a perfect solution.

+1


source


backgroundTimeRemaining

will return you NSTimeInterval

what is really just a value double

.

So I believe that before it can register a time interval (it gives you the remaining time "too fast"), it will give you the maximum value that a double can represent.

The `double` data type gives a range of approximately 1.7E–308 to 1.7E+308 for type double.

      



... that's why you get this ridiculously long value.

Happy coding! :)

0


source







All Articles