A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© !陈超 中级黑马   /  2015-4-28 21:47  /  1168 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. // 所以到了最后我也没有弄到书里提到的内容的意思。求解答
复制代码


3 个回复

正序浏览
简单点理解就是这样:
1. 不择手段,只求改变的话,两个其实都能改变。
2. 只不过mutable的,是在当前对象上直接改。
3. 没mutable的,是在别的地方改好了,重新赋值给当前对象。
回复 使用道具 举报
whqkgd5 发表于 2015-4-28 22:01
可变不可变指的是数组里存放元素数量的变化。

NSArray 对象创建了还可以修改吗? NSMutableArray 才可以吧
回复 使用道具 举报
可变不可变指的是数组里存放元素数量的变化。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马