黑马程序员技术交流社区
标题:
OC内存问题
[打印本页]
作者:
Lin枫
时间:
2014-4-14 12:04
标题:
OC内存问题
本帖最后由 Lin枫 于 2014-4-15 08:36 编辑
这段代码有什么问题,如何修改
for (int i = 0; i < someLargeNumber; i++)
{
NSString *string = @”Abc”;
string = [string lowercaseString];
string = [string stringByAppendingString: @"xyz"];
NSLog(@“%@”, string);
}
作者:
罗冠坤
时间:
2014-4-14 12:09
问题在于NSString是不可变字符串,所以它的stringByAppendingString方法,和lowercaseString方法都需要用一个新创建的字符串接收。。
作者:
于清扬
时间:
2014-4-14 13:15
本帖最后由 于清扬 于 2014-4-14 13:17 编辑
// 这段代码本身没什么问题 运行的结果会打印someLargeNumber次abcxyz.
/**
NSString *string = @"Abc";是不可变的
string = [string lowercaseString];
string = [string stringByAppendingString: @"xyz"];
这2句代码每次都返回一个新的字符串对象,
只是改变的指针string的指向。
重要:要分清,指针是指针,对象是对象,
oc中只是通过指针去操作对象。
在程序执行中,@"Abc"这个对象是没有发生变化的
只是指针string指向了不同对象而已
*/
for (int i = 0; i < someLargeNumber; i++)
{
NSString *string = @"Abc";
string = [string lowercaseString];
string = [string stringByAppendingString: @"xyz"];
NSLog(@"%@",string);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2