黑马程序员技术交流社区

标题: OC内存问题 [打印本页]

作者: Lin枫    时间: 2014-4-14 12:04
标题: OC内存问题
本帖最后由 Lin枫 于 2014-4-15 08:36 编辑

这段代码有什么问题,如何修改



作者: 罗冠坤    时间: 2014-4-14 12:09
问题在于NSString是不可变字符串,所以它的stringByAppendingString方法,和lowercaseString方法都需要用一个新创建的字符串接收。。
作者: 于清扬    时间: 2014-4-14 13:15
本帖最后由 于清扬 于 2014-4-14 13:17 编辑
  1. // 这段代码本身没什么问题 运行的结果会打印someLargeNumber次abcxyz.
  2.     /**
  3.      NSString *string = @"Abc";是不可变的
  4.      string = [string lowercaseString];
  5.      string = [string stringByAppendingString: @"xyz"];
  6.      这2句代码每次都返回一个新的字符串对象,
  7.      只是改变的指针string的指向。
  8.      
  9.      重要:要分清,指针是指针,对象是对象,
  10.      oc中只是通过指针去操作对象。
  11.      在程序执行中,@"Abc"这个对象是没有发生变化的
  12.      只是指针string指向了不同对象而已
  13.      */
  14.     for (int i = 0; i < someLargeNumber; i++)
  15.     {
  16.         NSString *string = @"Abc";
  17.         string = [string lowercaseString];
  18.         string = [string stringByAppendingString: @"xyz"];
  19.         NSLog(@"%@",string);
  20.     }
  21. }
复制代码





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