#define
is a preprocessor directive inherited from C that takes the form
#define identifier value
In general, it is used to tell the preprocessor to replace all instances of identifier
in the code with the given text before passing it on to the compiler. Identifiers can also be defined without values to be used as compiler flags to prevent multiple definitions of the same variables, or to branch on machine details that will not change during execution. For example, to pass different code to the compiler based on the architecture of your processor you could do something like:
#ifdef INTEL86
//some 32-bit code
#else
//some 64-bit code
#endif
When assigning values in these definitions, it's often a good idea to surround the value with parentheses so as to preserve it as one unit, regardless of the context it exists in.
For example, #define FOO 3 + 7
has a different result than #define FOO (3 + 7)
on the result of the following line, due to the order of arithmetic operations:
a = 3 * FOO
See this link for more details on preprocessor directives in general or this link for information more focused on Objective C.