Calling a method on an unitialized object (null pointer)

Posted by Florin on Stack Overflow See other posts from Stack Overflow or by Florin
Published on 2010-04-23T07:29:42Z Indexed on 2010/04/23 7:33 UTC
Read the original article Hit count: 320

  1. What is the normal behavior in Objective-C if you call a method on an object (pointer) that is nil (maybe because someone forgot to initialize it)? Shouldn't it generate some kind of an error (segmentation fault, null pointer exception...)?
  2. If this is normal behavior, is there a way of changing this behavior (by configuring the compiler) so that the program raises some kind of error / exception at runtime?

To make it more clear what I am talking about, here's an example.

Having this class:

@interface Person : NSObject {

    NSString *name;

}

@property (nonatomic, retain) NSString *name;

- (void)sayHi;

@end

with this implementation:

@implementation Person

@synthesize name;

- (void)dealloc {
    [name release];
    [super dealloc];
}

- (void)sayHi {
    NSLog(@"Hello");
    NSLog(@"My name is %@.", name);
}

@end

Somewhere in the program I do this:

Person *person = nil;
//person = [[Person alloc] init]; // let's say I comment this line
person.name = @"Mike";            // shouldn't I get an error here?
[person sayHi];                   // and here
[person release];                 // and here

© Stack Overflow or respective owner

Related posts about objective-c

Related posts about iphone