• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ios > OC中MRC下的NSString是由系统自动进行内存管理的?不需要手动操作?

OC中MRC下的NSString是由系统自动进行内存管理的?不需要手动操作?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了nsstring,nsdata转nsstring,nsstring 截取,ios nsstring,nsstring char等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: OC中MRC下的NSString是由系统自动进行内存管理的?不需要手动操作?
描述:

在MRC下面,以几种方式生成NSString对象,打印它们的retainCount,但根据输出似乎都已经被释放,难道NSString是由系统自动进行管理,不需要手动去操作了?
望有人能够解答,谢谢!

代码如下:

NSString *string1 = @"string 1";
NSString *string2 = [[NSString alloc] initWithString:@"string 2"];
    
NSString *string3 = [NSString stringWithFormat:@"string 3"];
NSString *string4 = [[NSString alloc] initWithFormat:@"string 4"];
    
NSLog(@"string1 count: %lu", (unsigned long)[string1 retainCount]);
NSLog(@"string2 count: %lu", (unsigned long)[string2 retainCount]);
NSLog(@"string3 count: %lu", (unsigned long)[string3 retainCount]);
NSLog(@"string4 count: %lu", (unsigned long)[string4 retainCount]);

结果输出:

2016-07-25 15:44:26.281 MRC_Test[1436:182510] string1 count: 18446744073709551615
2016-07-25 15:44:26.281 MRC_Test[1436:182510] string2 count: 18446744073709551615
2016-07-25 15:44:26.281 MRC_Test[1436:182510] string3 count: 18446744073709551615
2016-07-25 15:44:26.281 MRC_Test[1436:182510] string4 count: 18446744073709551615

输出格式什么的都没有问题,但是可以看到引用计数不是1,对象似乎被释放掉了。分别有四种创建方式,其中string1和string2是文字常量,不需要进行管理,那么暂且不论。而后面的string3和string4是创建在堆中,理应需要内存管理,但是结果不符合预期,望有人解答!


解决方案1:

字符串在每个编程语言中都是一个特殊的梗,在OC中,字符串对象都只是一个指针,指向内存中字符串常量的指针,他不开辟空间的。所以,字符串的内层管理,都不需要开发者去管理,编译器会来处理的。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于时间戳转换为NSDate和标准格式
  • 将URL上的图片存入NSData
  • 一个NSString的指针怎么判断是不是为null?
  • iOS将一个日期字符串转换为NSDate后,如何解决时区不同引起的时差?
  • OC中MRC下的NSString是由系统自动进行内存管理的?不需要手动操作?
  • 能把SecKeyRef转换成NSData或者字符串么

相关文章

  • 2017-06-05 一个textView里面的内容高度明明比textview小,却还是会滑动的问题
  • 2017-06-05 求大神如何上线带有抽奖活动的项目!
  • 2017-06-05 sdwebimage加载多图的时候出现内存飙升,网上方法都试过,没成功
  • 2017-06-05 通知传值刷新页面
  • 2017-06-05 如何高效的准确的获取一个工程所有控制器的viewdidload方法的执行时间?
  • 2017-06-05 如果延长apple-touch-startup-image显示的时间
  • 2017-06-05 iOS如何在应用内禁止截屏。为了保护一些信息的传播
  • 2017-06-05 如何发送邮件iOS如何发送scoket进行广播
  • 2017-06-05 ios现在主流的开发语言是什么啊
  • 2017-06-05 UITableViewreloadData之后,section区头的位置变化

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • OC编程碰到一个奇葩的问题,百思不得其解,求指点
    • 如何修改在编辑状态下选中cell时左侧选中图标的颜色?
    • 在acontroller里面如何调用bcontroller里面的一个方法,
    • 中国首届撸管大赛参加首届中国iOS应用开发大赛不要太看重奖金
    • http与https的区别https使用自签名证书的问题
    • 求助如何在MAC里使用gcc和openmp(已经下载了)
    • ios蓝牙开发出现有的手机连接不上的问题
    • 怎么才能快速减肥如果有很多条联系人怎么才能快速的显示出来呢?
    • 从xib载入view,如何让xib生成的视图,随着superview的大小改变大小,不要有元素丢失
    • 第三方第三方xcode集成第三方控件一般都使用什么?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有