ios浅谈关于nil和 NIL区别及相关问题(转)

转自:http://blog.csdn.net/guozh/article/details/8469131

个就是将引用技术减1,所谓的引用计数就是看看有多个指针指向一块内存实体,当release一次,就是指针减少一个,release到了0的时候,就是真正把这块内存归还给系统的时候了

再说self.test = nil;说明一下 属性和setter和getter方法就不难理解了

-(void) setTest:(NSString *)newString
{
if(_test != newString)
[_test release];
_test = [newString retain];
}
-(NSString *)test
{
return  _test;
}
这个是setter和getter方法,而在这个问题中相当于刚才的代码改变为
if(_test != nil)
[_test release];
_test = nil;
现在就比较容易解释了,setter方法会retain nil对象,在这之前已经先release了旧的对象,这个方法优点是成员变量连指向随机数据的机会都没有,而通过别的方式,就可能会出现指向随机数据的情况。当release了之后,万一有别的方法要用要存取它,如果它已经dealloc了,可能就会crash,而指向nil之后,就不会发生错误了。nil说白了就是计数器为0,这么说吧,当真正release一个对象的时候,NSLog是打印不了它指向的内存控件的,而当nil的时候,是可以打印出来指向的一个内存空间。
那么现在也不难解释test = nil;  单纯的这种用法可以说是自己给自己制造内存泄露,这里可以这么理解,就是相当于将指向对象的指针直接和对象一刀两断了。直接让test指向nil,而内存实体不会消失,也不会有系统回收。

时间: 2024-12-15 07:15:40

ios浅谈关于nil和 NIL区别及相关问题(转)的相关文章

浅谈 Cookie 与 Session 的区别

1.cookie机制 Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器.IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范.网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求附上这些cookies . 具体来说cookie机制采用的是在客户端保持会话状态的方案.它是在用户端的会话状态的存贮机制,他需要用户

浅谈SEO与SEM的区别

很多刚接触SEO的朋友,对于SEO都有一些迷茫和不解.今天,若言就简单的为大家介绍一下什么是SEO.什么是SEM.SEO与SEM的区别,希望对大家能有所帮助! 搜索引擎优化(Search engine optimization,简称SEO).针对搜索引擎的理论机制,对网站结构网页文字语言和站点间的互动外交策略,进行很里规划部署来发掘网站最大潜力.从而使其在搜索引擎具有较强的自然排名竞争优势.从而,促进企业在线销售和强化网络品牌. 讲得通俗一点,就是针对搜索引擎对自己的网站进行优化.SEO主要是通

浅谈线程池(下):相关试验及注意事项

三个月,整整三个月了,我忽然发现我还有三个月前的一个小系列的文章没有结束,我还欠一个试验!线程池是.NET中的重要组件,几乎所有的异步功能依赖于线程池.之前我们讨论了线程池的作用.独立线程池的存在意义,以及对CLR线程池和IO线程池进行了一定说明.不过这些说明可能有些"抽象",于是我们还是要通过试验来"验证"这些说明.此外,我认为针对某个"猜想"来设计一些试验进行验证是非常重要的能力,如果您这方面的能力略有不足的话,还是尽量加以锻炼并提高吧. C

iOS浅谈如何进行网络判断

由于近段时间工作太忙,博客都有一段时间没有进行更新了,现在就来浅谈一下网络的判断,如有错误请各位大神能够指出来共同学习一下,谢谢!下面就进入正题了: 1.添加源文件(两个)下载地址:http://code4app.com/ios/Reachability/509743dc6803fae669000000 2.导入框架[SystemConfiguration.framework] 3.创建网络连接 3.1 创建互联网连接的对象 Reachability *reach1 = [Reachabilit

浅谈Swift和OC的区别

前言 转眼Swift3都出来快一年了,从OC到Swift也经历了很多,所以对两者的一些使用区别也总结了一点,暂且记录下,权当自己的一个笔记. 当然其中一些区别可能大家都有耳闻,所以这里也会结合自身的一些平常记录,稍许整理,才诞生了本篇文章,中间或许会有不对之处,还望指出来,共同进步. 正文 一.Swift和Objective-C的联系 Swift和Objective-C共用一套运行时环境,Swift的类型可以桥接到Objective-C(下面我简称OC),反之亦然.两者的互相引用混合编程我之前有

[iOS]浅谈NSRunloop工作原理和相关应用

一. 认识NSRunloop  1.1 NSRunloop与程序运行 那么具体什么是NSRunLoop呢?其实NSRunLoop的本质是一个消息机制的处理模式.让我们首先来看一下程序的入口——main.m文件,一个ios程序启动后,只有短短的十行代码居然能保持整个应用程序一直运行而没有退出,是不是有点意思?程序之所以没有直接退出是因为UIApplicationMain这个函数内部默认启动了一个跟主线程相关的NSRunloop对象,而UIApplicationMain这个函数一直执行没有返回就保存

浅谈angular2与angularJS的区别

简介 大家好,今天给大家介绍一下angular,相信做过前端的小伙伴们都知道angular的大名,angularJS自2012年发布起就受到了大家的广泛关注.他首次提出了双向绑定概念让所有人都耳目一新,2016年angular2正式被发布,那么angular2到底有什么值得期待的地方呢,接下来讲一下angular2吸引人的地方. 1.1.1  angularJS的困境以及angular2的新特性 首先呢我们讨论一下angularJS的一些不足之处: 1.饱受诟病的性能问题 通过检查进行数据更新,

从内部入手,浅谈malloc和new的区别

想要理解一样事物,就要先用自己的语言去描述一件事物.在我查阅资料后,发现malloc函数简单说来就是空闲内存空间收集器,并把空闲空间关联起来,用术语来说就是:将空闲内存块合并起来并称为"闲置链表".然后在这块空闲空间进行划分,划出用户需要的与用户不需要的.然后把用户需要的给用户,不需要的返还给"闲置链表".而用户使用free释放时候也是扔回去的过程.但是这时候的空闲空间是间断的片段,malloc函数就需要去整理整合这些片段,若空间达不到用户需要,malloc就会返还

浅谈软件工程与计算机科学的区别

从本科阶段来看,几乎没什么区别.以我在的厦大计算机科学系和软件学院来说,我们系里面还分理论和应用两个方向,软件学院也有分方向,不过只是平台不同,都是软件应用方面的.所以数学课上,我们系理论方向的学生上的是数分.高代,比较难,而我们应用的和软件学院一样上高数.线代.计算机科学相对就有更数学.更学术的方向,比如去研究数理逻辑啊什么的,软件学院则更偏应用. 还是拿我校为例(不同学院还是不一样的),我校的软件学院要上好几门高级编程语言的课C/C++/JAVA等,而我们当时就上了一个学期的C,再加5周小学