Recently I was working on a legacy project written in Objective-C, which reminded me of the early days when working on Objective-C projects.

In the code I saw few things like the following which defines a constant:

#define car_price 300

#define creates a macro which simply do the replacement for the compiler. In the above code, compiler doesn't know the type of the card_height. It must be converted to a float value when using. So it is not type-safe.

Instead of using a macro to define a constant, it is a better way to use const to define a constant as it is type-safe and easier to debug.

static float const kCarPrice = 300.0f; 

Also we can use const to define other types of constants too.

static NSString* const kCarModel = @"Lexus IS 200T"; 
static in const KCarType = 1;

Noticed that const can only used before immutable variables. So the following two statements are the same, both kCarModel1 and kCarModel2 are immutable, even if they have the type of NSMutableString.

static NSString* const kCarModel1 = @"Lexus IS 200T"; 
static NSMutableString* const kCarModel2 = @"Lexus IS 200T";