2011-10-26 21 views
10

Tengo clases A y B.
¿Puedo colocar estas clases en el mismo NSMutableArray sin problemas en el futuro?¿Puedo poner diferentes tipos de objetos en el mismo NSMutableArray?

Ejemplo:

NSMutableArray *maincoll = [[NSMutableArray alloc] init]; 
ClassA *ca = [[classA alloc] init]; 
ClassB *cb = [[classB alloc] init]; 
//here is case 
[maincoll addObject:ca]; 
[maincoll addObject:cb]; 
... 

Respuesta

21

Sí. Sin limitaciones Lo único que debe tener cuidado es cuando recupera elementos de la matriz para verificar su clase (si es necesario) antes de comenzar a usarlos.

+0

¿Y cómo verifica sus clases? –

+0

google: "object-c find class of object". Primer acierto: http://stackoverflow.com/a/2056036 Resumen: "[yourObject isKindOfClass: [a class]]" – pmeyer

+0

El bucle for puede hacer esto por usted. Por ejemplo, con un containter NSArray *: para (cadena NSString * en contenedor) {// hacer lo que sea}; entra y toma todos los objetos NSString y hace algo y luego puede hacer: para (NSWever lo * que sea en contenedor) {// hacer algo más}; – unmircea

0

Usted puede poner objetos de diferentes clases. Solo necesitan heredar de NSObject. No olvides soltar después de agregar a la matriz.

+0

No, no necesitan heredar de 'NSObject'. Solo necesitan ser objetos Objective-C, es decir, de tipo 'id'. – mouviciel

+0

Voy a decir mi comentario como una pregunta, ¿puedes asegurarte de que los tipos de identificación responderán para retener/liberar mensajes? por lo que entiendo, no puedes. – jbat100

+0

No es necesario. Compruebe el prototipo 'addObject:' en [Referencia de NSMutableArray] (http://developer.apple.com/library/IOS/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html) – mouviciel

8

Sí.

Esta puede ser la respuesta más breve que he publicado.

Cuestiones relacionadas