Question: Say I wanna create an array of images and i used this:

```
NSMutableArray *images = [[NSMutableArray alloc]init];

```

what role does init really play here? won't it work if I simply use:

```
NSMutableArray *images = [NSMutableArray alloc];

```

Please help. Thanks.

Answer: 
No, you absolutely cannot just say `[NSMutableArray alloc]`. Calling a method on the results of sending `+alloc` to *any* class is absolutely incorrect unless that method is one of the `-init...` methods. All `+alloc` does is reserve the memory for the object. It's basically equivalent to calling `calloc(sizeof(class), 1)`. The `-init` method is crucial to actually initialize the object into a working state.
This applies not just to arrays, but to any Objective-C class that can be instantiated: `alloc` allocates memory to hold the instance but doesn't put anything in it, and `init` actually initializes an object in that memory location.