Question: I am studying from the Stanford CS193P from Paul Hegarty. Then I see something like this, which I also see other people using:

```
- (id)init
{
    self = [super init];
    if (self) {
        [self someSetupFunctions];
    }
    return self;
}

```

Isn't that redundant? Why not just use:

```
- (id)init
{
    self = [super init];
    [self someSetupFunctions];
    return self;
}

```

I thought that messages to nil just fizzle, so why not use this second format?

Answer: 
You may want to do other things than passing messages to self. For example:

```
- (id)init
{
    self = [super init];
    if (self) {
        // set up ivars
        _anIvar = 5;
    }
    return self;
}

```
What's really meant by `[self someSetupFunctions]` is some initialization code, not just a single method call, and a number of important things will fail if `self` is nil. Most notably, attempting to assign initial values to instance variables will crash.