[转载] iphone 很有意思的NSString 和 Autorelease
原文摘自:http://www.cnblogs.com/jifsu/archive/2011/09/09/2172863.html
一个方法,返回一个NSString对象,在事件中调用方法.并尝试release 方法返回的NSString对象.
-( NSString *) createNewString{
|
//情况1
|
return [[[ NSString alloc] initWithFormat:@ "%@" ,@ "1223344" ] autorelease];
|
//情况2
|
return [[[ NSString alloc] initWithString:@ "1223344" ] autorelease];
|
// 情况3
|
return @ "1223344" ;
|
}
|
//调用方法,在事件中
|
- ( IBAction )TouchDown:( id )sender {
|
NSString * str = [ self createNewString];
|
NSLog (@ "输出1 , count : %d" , [str retainCount]);
|
[str release];
|
NSLog (@ "输出2 , count : %d" , [str retainCount]);
|
}
|
情况1 :
2011-09-08 21:33:38.817 AutoRelease[718:b303] 输出1 count : 1
2011-09-08 21:33:38.819 AutoRelease[718:b303] *** -[CFString retainCount]: message sent to deallocated instance 0x4e50c60
此时xcode断点停留在 输出2... 本来以为是输出2抛错. 理解为: 一个被回收的对象,不能执行方法retainCount . (单纯被回收 和 nil 是否有区别下次学习)
注释 输出2
结果为 :
2011-09-08 21:35:02.690 AutoRelease[745:b303] 输出1 count : 1
2011-09-08 21:35:02.692 AutoRelease[745:b303] *** -[CFString release]: message sent to deallocated instance 0x6895940
断点已经跑到main方法中去了. 此时确定为 [str release]; 方法抛错. 理解为: 对于一个 autorelease 的对象.不能手工进行 release操作.
修改一下调用方法:
- (IBAction)TouchDown:(id)sender { NSString* str = [[self createNewString] retain]; NSLog(@"输出1 count : %d" , [str retainCount]); [str release]; NSLog(@"输出2 count : %d" , [str retainCount]);}
此时方法执行通过,无异常.输出为:
2011-09-08 21:40:42.029 AutoRelease[804:b303] 输出1 count : 2
2011-09-08 21:40:42.030 AutoRelease[804:b303] 输出2 count : 1
理解为: 当你需要操作 一个被autorelease的对象时. 可以首先 retain 他,然后在不在需要他的时候,release他 . (这个是对象所有权的问题) .. retain == 计数器+1
----------------------------------- ----------------------------------- ----------------------------------- -----------------------------------
情况2 , 情况 3 : 方法 在修改前 和修改后2种代码下,都能运行过去.
输出都为:
2011-09-08 21:49:16.993 AutoRelease[864:b303] 输出1 count : 2147483647
2011-09-08 21:49:16.995 AutoRelease[864:b303] 输出2 count : 2147483647
理解为: initWithString:@"1223344" ,创建了一个 常量 字符串.并被系统限定为不可release和retain的对象. 有点类似 苹果推荐的单例模式
注: 2147483647 是 UINT_MAX 的值
如果方法返回 return [[[NSString alloc] init] stringByAppendingString:@"Hello World!"];
这个里面会存在内存泄露吗??? 继续研究....
可以参考的:http://stackoverflow.com/questions/1390334/nsstring-retain-count
转载于:https://www.cnblogs.com/85538649/archive/2011/11/15/2249849.html
[转载] iphone 很有意思的NSString 和 Autorelease相关推荐
- 一个很有意思的问题: 揭示了计算机程序问题的一般处理思路
2019独角兽企业重金招聘Python工程师标准>>> 一个很有意思的问题: 揭示了计算机程序问题的一般处理思路 === 问题标题: 如何统计汉字的字数? 问题内容: 我想统计: & ...
- Java异常处理机制很有意思
版权声明:欢迎转载,请注明沉默王二原创. https://blog.csdn.net/qing_gee/article/details/43015379 前言:在网络上看到一篇<深入理解Java ...
- 00003-回文数的判定-leetcode-解法不唯一,1.reverse最简单,2.数学方法很有意思
回文数的判定 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number 著作权归领扣网络所有.商业转载请联系官方授权, ...
- 今天看了ning的介绍,很有意思
今天看了ning的介绍,很有意思.多去看看,那里有很多的创意. 还有个有意思的想法,首页全是图片,或者字,点击最多的最大,形成有趣的结构 转载于:https://www.cnblogs.com/liu ...
- 杭州有什么「鲜为人知但很有意思」的景点?
杭州有什么「鲜为人知但很有意思」的景点? 杭州有什么「鲜为人知但很有意思」的景点? posted on 2016-08-29 13:06 lexus 阅读(...) 评论(...) 编辑 收藏 转载于 ...
- 很有意思的猜字谜对联
在书上看到一个很有意思的猜字谜对联,大家不妨猜猜看 上联: 黑不是,白不是,红黄更不是,和狐狸猫狗彷佛,既非家畜,又非野兽 下联: 诗也有,词也有,论语上也有,对东西南北模糊,虽是短品,却是妙文 转载 ...
- 7个小众却很有意思的工具推荐,每一个都是大宝藏!
作为一个工具控,自己也体验了上百个软件和网站,今天给大家推荐7个小众很有意思的工具,喜欢的话记得点赞支持哦~ 1.正版中国 正版中国是一个分享正版软件限时免费信息的网站.有很多优质的正版软件会做一些限 ...
- 不再有神的概念,将所有存在称之为文明,这很有意思
不再有神的概念,将所有存在称之为文明,这很有意思 宇宙7级文明到底有多恐怖?科学家:不再是生物,宇宙创造者 2019-04-29 23:17 未解三分钟 标签: 宇宙文明 地球 科学 以前的科学家认为 ...
- 工作214:结构 vue操作一个很有意思的报错 [Vue warn]: You may have an infinite update loop in a component
结构 vue操作一个很有意思的报错 [Vue warn]: You may have an infinite update loop in a component render function. 代 ...
最新文章
- 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图
- 职场小窍门:看穿同事性格的16个小动作
- 不用光盘可破解电脑系统密码
- delphi初级教程之delphi断点调试一
- windows10 python2.7 opencv3
- MySQL 中NULL和空值的区别
- 利用丁香园数据生成疫情分布地图(R语言)| 博文精选
- python循环括号_Python3中小括号()、中括号[]、花括号{}的区别详解
- PADS2007常用快捷键
- 【计算机三级网络技术】 快速求出IP地址块经聚合后的IP地址
- 专注于win7官网,专注win7系统安装
- 神奇的泡泡java游戏,抖音挤泡泡游戏叫什么名字 抖音上很火的减压游戏介绍
- 2015合肥市第 32 届青少年信息学(计算机)奥林匹克竞赛小学组试题
- 微信群被封怎么办?微信群如何防封?一招解决永不封群!
- 【linux系统用户管理】
- 修改滚动条样式的方法
- C#使用throw和throw ex的区别
- 远程桌面工具栏无法唤出-退出办法 远程桌面关机
- 【热门】新生儿起名测名:女孩带墨字的名字有哪些
- DDoS攻击的原理是什么