Ogni classe ha il suo metodo init, che lo eredita da NSObject.
Quando ri-definisci il metodo init, fai overriding, ovvero se su un oggetto appartenente a quella classe usi il metodo init, viene usato quello che hai definito te.
Quando hai dichiarato:

codice:
NSMutableArray *numeri = [[NSMutableArray alloc] init];
Hai usato il metodo init della classe NSMutableArray.
Questo metodo serve per inizializzare i campi della classe.Generalmente include una chiamata al metodo init della superclasse, per inizializzare anche i campi ereditati.
Ecco un esempio di come puoi fare:

codice:
- (id)init
{
    self = [super init];
    if (self) 
    {
        numeri=[[NSMutableArray alloc]init];
    }
    return self;
}
Però studiatele queste cose, non hai un libro o un manuale?