int entero = 21;Es debido a que no podemos meter un int (ni ningún dato de tipo escalar) en un Dictionary, para hacerlo deberemos usar un NSNumber, asi que cambiado:
NSMutableDictionary *diccionario = [[NSMutableDictionary alloc] init];
[diccionario setObject:entero forKey:@"numero"];
int entero = 21;
por NSNumber *entero = [[NSNumber alloc] initWithInt:21];
Lo tenemos arreglado.
PD: lo mismo nos ocurrira en un array