IOS NSString真是个奇葩啊!
发布日期:2021-08-31 01:31:35 浏览次数:7 分类:技术文章

本文共 824 字,大约阅读时间需要 2 分钟。

hot3.png

一直认为像这样写会造成内存泄露呢!可是我好像真的错了。

NSString *textStr = @"abc";if (YES) {   textStr = @"def";}NSLog(@"textStr is %@", textStr);
这样写一点问题都没有,因为在OC中有个常量字符串(NSConstantString)的概念,而它是不需要手动release的。我又做了测试如下

NSString *str = @"dddd";while (YES) {    str = @"aaaaaaaaa";    NSLog(@"%@   %d", str, str.retainCount);}
运行了足足10分钟,内存一点没涨,又做了如下测试

NSArray *array = @[@"dddd", @"dddd"];    while (YES) {        array = @[@"dddddddddd"];        NSLog(@"%@", array[0]);    }
运行期间,内存呈直线上升,两种测试cpu几乎爆满。

接下来又错了如下测试,

NSString *str = @"dddd";    while (YES) {        str = [[NSString alloc] initWithString:@"4321"];        NSLog(@"%@   %d", str, str.retainCount);    }
结果内存依然不涨,所以好真的没问题,但是最后这种情况不建议,因为要遵循官网的内存管理原则,要加上release。

另外这样写不会报错的。

NSString *str = @"dddd";    [str release];    NSLog(@"str is %@", str);

转载于:https://my.oschina.net/lych0317/blog/130224

转载地址:https://blog.csdn.net/weixin_34056162/article/details/91958812 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Extjs 备忘录
下一篇:php扩展mongo和mongodb对应的MONGODB版本

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年03月24日 08时12分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章