黑马程序员技术交流社区

标题: 关于NSArray的问题,求解答 [打印本页]

作者: !陈超    时间: 2015-4-28 21:47
标题: 关于NSArray的问题,求解答
  1. /*
  2. 看Objective-C里面有

  3. NSArray 是不可变数组,数组中包含的对象是可以改变的,但是数组对象本身是不会改变的

  4. 是说 NSArray 是不可变数组,但是元素是可以改变的,就是对象的指向改变?
  5. */

  6. #import <Foundation/Foundation.h>

  7. int main(int argc, const char * argv[]) {
  8.     @autoreleasepool {
  9.         NSString *string = @"opp : ack : bork : greeble : ponies";
  10.         
  11.         NSArray *array = [string componentsSeparatedByString:@":"];
  12.         
  13.         NSLog(@"%@", array[2]); // 这里可以打印里面的字符串
  14.         
  15.         //array[2] = @"cc";    // 提示错误 Expected method to write array element not found on object of type 'NSArray *'
  16.         
  17.         // 赋值不成。可是 NSArray 数组集合中存储的只能是 OC 对象,所以我想看看该元素对象是什么类型
  18.         Class c = [array[2] class];
  19.         
  20.         NSLog(@"%@ , %@", c, [string class]);   // 这里打印的两个类型不同 __NSCFString , __NSCFConstantString
  21.         
  22.         string = [array componentsJoinedByString:@"--"]; // array[2]不能修改就算了,可是这个NSString对象怎么可以修改了
  23.         
  24.         NSLog(@"%@", string);
  25.     }
  26.     return 0;
  27. }
  28. // 所以到了最后我也没有弄到书里提到的内容的意思。求解答
复制代码



作者: whqkgd5    时间: 2015-4-28 22:01
可变不可变指的是数组里存放元素数量的变化。
作者: !陈超    时间: 2015-4-28 22:25
whqkgd5 发表于 2015-4-28 22:01
可变不可变指的是数组里存放元素数量的变化。

NSArray 对象创建了还可以修改吗? NSMutableArray 才可以吧
作者: 仰望的繁华    时间: 2015-4-28 22:31
简单点理解就是这样:
1. 不择手段,只求改变的话,两个其实都能改变。
2. 只不过mutable的,是在当前对象上直接改。
3. 没mutable的,是在别的地方改好了,重新赋值给当前对象。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2