Difference between NSArray and NSMutableArray

44,215

Solution 1

NSMutableArray (and all other classes with Mutable in the name) can be modified. So, if you create a plain NSArray, you cannot change its contents later (without recreating it). But if you create an NSMutableArray, you can change it — you'll notice it has methods like -addObject: and -insertObject:atIndex:.

See the documentation for details.

Solution 2

The "mutable" types are classes which can be changed after they've been initialized, like NSMutableString vs NSString.

Solution 3

NSArray : in NSArray we can not change index.... Means fix array.

NSMutableArray : in NSMutableArray we can change index and also add the value in array at run-time..

Share:
44,215
g.revolution
Author by

g.revolution

i m a geek :d SOreadytohelp

Updated on January 01, 2020

Comments

  • g.revolution
    g.revolution over 4 years

    What is the difference b/w NSArray and NSMutableArray?

  • mmx
    mmx over 14 years
    NSMutableString is derived from NSString. Consequently, you can't rely on a "NSString*" you receive from outside to be immutable. You can only assume NSMutableString* is mutable. NSString* can be mutable or immutable. That's why you might want to call [str copy] when the instance is assigned to some property in your class.
  • Shaggy Frog
    Shaggy Frog over 14 years
    You can't change an NSString once it's built. See stackoverflow.com/questions/905396/…. As for why you use copy, see stackoverflow.com/questions/387959/…
  • mmx
    mmx over 14 years
    Shaggy: You can't change an instance of NSString class. This is not the issue. The issue is that a "NSString*" does not necessarily point to an instance of NSString class. It can also point to instances of classes derived from NSString, like NSMutableString. Therefore, you can't rely on an NSString* you have received from the outside world to be immutable.
  • Shaggy Frog
    Shaggy Frog over 14 years
    Okay, I understand now. I'll delete that portion of my answer.