This array convenience method takes a comma-separated list of objects ending with nil.
myArray = [NSArray arrayWithObjects:aDate, aValue, aString, nil];
What is the purpose of the nil?
Null terminated variable argument lists, or va_lists, keep walking the list of arguments until they encounter a placeholder or sentinel, which is nil.
Since the method has no way of knowing how many arguments you are passing, it needs the sentinel (nil) to tell where the list ends.
printf function knows how many args to expect, you don't need null termination.