美文网首页iOS 开发
nil和release的作用与使用

nil和release的作用与使用

作者: liyc_dev | 来源:发表于2017-02-15 11:18 被阅读20次

迁移自开源中国

对于一个指向对象的变量,它里面存储的是一个地址,一个指向内存中某块区域的地址。

nil:的作用就是将这个变量置为空,不指向任何地址。

release:的作用是将这个变量指向的内存中的对象的引用计数减一,直到引用计数为零时释放这块内存。

所以,如果你只是做了nil操作,那么就会引起内存泄露的问题,因为它永远也不会做release操作了。

如果你只是做了release操作,那么就有可能引起crash,原因就是只是release(我认为这个对象已经被释放)而没有将变量置为空,当你再对这个变量做操作时就会引起问题,因为你在对一个不存在的对象做操作。

所以建议,不再需要一个对象时,除了要做release操作以外还要做nil操作。

NSString *str; 此时str指向当前对象。所以对它的操作要小心,建议:NSString *str = nil;

相关文章

  • nil和release的作用与使用

    迁移自开源中国 对于一个指向对象的变量,它里面存储的是一个地址,一个指向内存中某块区域的地址。

  • IOS开发中nil和release的用法

    先简单解释一下nil和release的作用: nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系;...

  • __Strong  __weak  __autorelease

    1.__Strong ARC 无效时,引用计数器加1,当超出作用域,引用为nil,由于未执行release 方法,...

  • synchronized

    1、synchronized是使用的递归mutex来做同步。@synchronized(nil)不起任何作用(这样...

  • swift学习

    1、?与!的区别 ?代表可选,如果为空就是nil;!代表强制,如果为空就报错。这个的作用是告诉我们使用的时候很直观...

  • OC的安全释放

    什么是安全释放?在对象调用release方法后把指针置为nil,即为安全释放,不置为nil,即为不安全释放。在MR...

  • iOS调试注意点,断点对象一直为nil

    如果以Release运行调试,是获取不到任何信息,断点对象为nil. 解决:

  • Nil Channels 的作用

    思考来源于一次忘记初始化channel,造成程序卡死。 查找资料发现操作nil channels会永远阻塞,这个特...

  • Xcode使用指南

    Xcode debug与release模式 iOS开发技巧(系列十七:使用Xcode DEBUG模式和RELEAS...

  • Release下某属性为nil

    某个自定义类的属性:在debug下有值,在release下为nil。查看下属性的申明是否出错,应该用strong或...

网友评论

    本文标题:nil和release的作用与使用

    本文链接:https://www.haomeiwen.com/subject/cvqqwttx.html