I slammed into a wall at this line of code.
NSDate *now = [NSDate date];
This is what I think I know about this code, but I suspect I don’t understand what is happening here.
*now is a pointer.  encompasses a message. NSDate is a class. date is a method inside NSDate (not because its in brackets with NSDate, but by its declaration somewhere).
I think that the essence of a message is to specify a class and a method in brackets, and that  syntax will return the results of the message. Not unlike calling a function.
The part that seems most confusing is that NSDate is on both sides of this assignment statement. I think that *now becomes a pointer with the type NSDate, and I get that classes can generate instances of themselves. So I’m guessing that NSDate *now acts kind of like a C declaration where NSDate is a type and *now is the name of the variable, in this case a pointer to an object with the type NSDate.
As a result, a variable now contains the current date as an NSDate object, correct?
I’ve looked at the stack in the debugger, and the NSDate class reference, and this explanation sort of feels right, but I’m not sure. Its as if the moving parts in the code, which have made sense every step of the way until now, have suddenly become opaque.
Any help would be greatly appreciated. Thank you.