Apple Documentation for idleTimerDisabled
The default value of this property is NO. When most apps have no touches as user input for a short period, the system puts the device into a "sleep” state where the screen dims. This is done for the purposes of conserving power. However, apps that don't have user input except for the accelerometer—games, for instance—can, by setting this property to YES, disable the “idle timer” to avert system sleep.
By assigning true
to this value, iOS won't dim the screen and lock the iPhone when user doesn't make any action (touches, press, scroll, etc...). Example of this can be found in games vs other normal apps. Games make your iPhone awake for a lot longer than other apps.
For
[[UIApplication sharedApplication] addObserver: forKeyPath: options: context:]
This is an
Objective-c key value observing aka
KVO.
What your code means is that, when someone assigns or make changes to
UIApplication.sharedApplication.idleTimerDisabled
with an arbitrary value,
true
or false
in this case, you wish to receive an invocation about the assignment or change in
[self observeValueForKeyPath: ofObject: change: context:]
method signature.
The option NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew
means, you want to receive more information about changed old value and new value in the change dictionary which you can access later in the observing method.
For more information about KVO, checkout this post by NSHipster.
AppCoda also has a nice explanation for this.
Conclusion
What your line of code means is, you want to receive a notification about the changes made to
UIApplication.shared.idleTimerDisabled
attribute in KVO observing method and you want to access
old value and
new value through
change dictionary.