黑马程序员技术交流社区

标题: 关于OC数组的问题 [打印本页]

作者: 程序猿-2014    时间: 2014-4-18 18:00
标题: 关于OC数组的问题
NSMutableArray 类型的 对象 调用 arrayByAddingObjectsFromArray: objects   这个返回的时它自己本身还是什么?  求大神解惑

作者: 微尘•逐梦    时间: 2014-4-18 18:12
  1. #import <Foundation/Foundation.h>

  2. int main()
  3. {
  4.    
  5.     NSMutableArray *array1 = @[@"jack",@"rose"];
  6.     NSArray *array2 = @[@"jim" ];
  7.     NSMutableArray *array3;
  8.     array3 = [array1 arrayByAddingObjectsFromArray:array2];
  9.    
  10.     NSLog(@"%@",array1);
  11.     NSLog(@"%@",array2);
  12.     NSLog(@"%@",array3);
  13.    
  14.     return 0;
  15. }
复制代码

输出结果
  1. 2014-04-18 18:10:26.467 0418-test2[2197:303] (
  2.     jack,
  3.     rose
  4. )
  5. 2014-04-18 18:10:26.469 0418-test2[2197:303] (
  6.     jim
  7. )
  8. 2014-04-18 18:10:26.469 0418-test2[2197:303] (
  9.     jack,
  10.     rose,
  11.     jim
  12. )
  13. Program ended with exit code: 0
复制代码

从结果来看不是它本身,是两个数组拼接之后的结果。
作者: 李烨    时间: 2014-4-18 19:40
- (NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray
这是他的方法   返回NSArray *
作者: 悟中生有    时间: 2014-4-18 19:43
  1. int main(int argc, const char * argv[])
  2. {
  3.     //定义可变数组
  4.     NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"shanghai",@"taiwan", nil];
  5.     NSArray *array2 = @[@"beijing"];
  6.    
  7.     //打印数组和数组的内存地址
  8.     NSLog(@"%@----%p",array1,array1);
  9.     NSLog(@"%@----%p",[array1 arrayByAddingObjectsFromArray:array2],[array1 arrayByAddingObjectsFromArray:array2]);

  10.     return 0;
  11.     /*运行结果:
  12.      2014-04-18 19:40:28.454 OC基础小练习-1[522:303] (
  13.      shanghai,
  14.      taiwan
  15.      )----0x10010bdf0
  16.      2014-04-18 19:40:28.457 OC基础小练习-1[522:303] (
  17.      shanghai,
  18.      taiwan,
  19.      beijing
  20.      )----0x100300a20
  21.      由打印出来的内存地址可以看出,返回的是新创建的数组对象,不是原对象。
  22.      */
  23. }
复制代码





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