In mukti-threaded environments, you want to make sure that one thread is not changing the value of a property while the other is retrieving it.
This may be a little detailed here, but this is from Apple's documentation:
Properties are atomic by default so that synthesized accessors provide robust access to properties in a multi-threaded environment—that is, the value returned from the getter or set via the setter is always fully retrieved or set regardless of what other threads are executing concurrently. For more details, see “Performance and Threading.”
If you do not specify nonatomic, then in a reference counted environment a synthesized get accessor for an object property uses a lock and retains and autoreleases the returned value.
...
If you specify nonatomic, then a synthesized accessor for an object property simply returns the value directly.
Cheers,
Steve Kochan