@cobbal Respuesta realmente genial :) Después de ver tu respuesta, realmente entendí la diferencia. Pero al principio me pareció un poco confuso ya que soy un novato en la programación de Objective-C, así que solo quiero mejorar su respuesta dando un ejemplo. Espero que ayude a otros novatos cuando miran el ejemplo :)
#import<Foundation/Foundation.h>
int main()
{ int i;
printf("Enter 1 to perform removeObject function.\n Enter 2 to perform removeObjectIdenticalTo functionality.\n ");
scanf("%d",&i);
@autoreleasepool{
NSString* color;// int count;
NSString * s1 = [NSMutableString stringWithString: @"Red"];
NSString * s2 = [NSMutableString stringWithString: @"Yellow"];
NSString * s3 = [NSMutableString stringWithString: @"Red"];
NSString * s4 = [NSMutableString stringWithString: @"Cyan"];
NSMutableArray * myColors = [NSMutableArray arrayWithObjects: s1,s2,s3,s4,nil];
if(i == 1)
{
[myColors removeObject: s1]; //will remove both s1 and s3 object because their contents are same
//we can also use [myColors removeObject: @"Red"]; instead of above statement. However the functionality remains same .
for(color in myColors)NSLog(@"%@",color);
}
else if (i == 2){
[myColors removeObjectIdenticalTo: s1]; //deletes only s1 object in the array myColor
for(color in myColors)NSLog(@"%@",color);
}
}
return 0;
}
PD: Esto es solo un ejemplo. U puede encontrar la respuesta en la respuesta de @cobbal.
Solo para observar que, desde que se hizo esta pregunta, la documentación de ambos métodos se ha actualizado para indicar explícitamente cómo se seleccionan los objetos para su eliminación. – JeremyP