Constant in Objective-C

March 2, 2011 § Leave a comment

This is a very tricky task to handle constants in Objective-C. The most suggested approach is to define global, public or private constants. This will work only if you don’t expect to put the same constant inside a loop.

In the header file

// Constants.h
extern NSString * const strConstant;

You can include this file in each file that uses the constants or in the pre-compiled header for the project.

// Constants.m
NSString * const
strConstant
= @"Constant";

Constants.m should be added to your application/framework’s target to link it to product.

It is suggested that the advantage of using string constants instead of #define‘d constants is that you can test for equality using pointer comparison (stringInstance == strConstant) which is much faster than string comparison ([stringInstance isEqualToString:strConstant]).

// Constants.h
#define MY_CONSTANT @"my_constant"

Or even better
// Constants.h
extern NSString * const MY_CONSTANT;
// Constants.m
NSString * const MY_CONSTANT = @"my_constant";

If you need a non global constant, you should use static keyword. Static constant is not visible outside the file.

// Constants.m
static NSString * const CONSTANT = @"my_constant";

Another quick dirty way of declaring global constants is to put constant declaration into pch file instead of .h or .m files.

To declare integer instead of string in Objective-C, you will use NSInteger. This is Apple preferred way of declaring Objective-C integer.

NSInteger const counter = 0;

However if you are going to use this method to declare NSInteger and use it inside a loop, then you are in trouble.

Warning:

Assignment of read-only variable ‘counter’

If you need to use a constant inside a IF statement and iterate the constant inside a class instance or method, you would have to use static keyword.

You can add static int outside @implement.

static int counter = 0;

– (void)showTimer {
counter += 1;
}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

What’s this?

You are currently reading Constant in Objective-C at Web Builders.

meta

%d bloggers like this: