`

iOS开发中nil和release的用法

    博客分类:
  • IOS
 
阅读更多

先简单解释一下 nil 和 release 的作用: nil 就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系;而 release 才是真正通知内存释放这个对象。所以 nil 并没有释放内存,只有 release 才回真正释放内存。


再分析一下二者使用的先后顺序:如果没有 release 就直接 nil ,那么虽然不会出错,却等于自己制造内存泄漏了,因为 nil 之后 release 就已经不起作用了。 相反,如果在使用接口对象时只仅仅 release 没有设置 self.myOutlet =nil ,那么程序可能也不会报错,但却会十分不稳定、不健壮,很容易发生崩溃现象。因为一个接口对象在 release 之后,给它所分配等内存就已经被释放了,如果释放之后系统再用到这个对象,那么程序就会 crash 。如果释放之后把它的指针置为空,则即便后面的程序用到该对象,也不会崩溃。


所以在使用 nil 和 release 的时候一定要慎重哦!

分享到:
评论

相关推荐

    iOS开发 常见的崩溃闪退原因(12点)1

    在iOS开发过程中,应用程序的稳定性和性能至关重要。然而,由于各种原因,开发者可能会遇到应用崩溃或闪退的情况。本文将详细介绍十二个常见的导致iOS应用崩溃的原因,并提供相应的预防措施。 1. **字典的key或...

    iOS开发中常用的一些宏定义.zip

    在iOS开发过程中,宏定义...以上只是iOS开发中宏定义的一些基本应用,实际开发中还有许多其他用途和技巧,如防止空指针引用、性能计时、内存泄漏检测等。理解并熟练运用宏定义,可以使代码更加简洁、高效且易于维护。

    IOS 开发总结

    iOS开发是使用Objective-C或Swift语言为苹果iOS平台开发应用程序的过程。在iOS开发总结中,作者分享了在开发过程中遇到的难点以及解决方案,并提供了给初学者的编程习惯建议。 1. Objective-C代码技巧 - 代码混编...

    ios开发ios基础开发面试题.txt

    它是苹果公司开发iOS和macOS应用的主要语言之一。 - **特点**: - 动态类型:变量可以在运行时绑定到任何类型的对象上。 - 消息传递:方法调用被视为向对象发送消息的过程。 - 类与对象:支持类继承以及多级继承...

    百度地图iOS SDK开发教程

    ### 百度地图iOS SDK开发教程 #### 第一章 Hello Baidu Map ##### 一、通过代码创建 在本节中,我们将详细介绍如何通过代码创建百度地图。这将包括几个关键步骤,确保地图能够成功地在应用中显示。 **1.1 初始化...

    iOS开发技巧

    2. `dealloc`方法中的内存清理工作由编译器自动处理。 在程序入口,ARC通常会包含一个`@autoreleasepool`块,例如: ```objc int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain...

    IOS 基础之nil,NULL,NSNULL区别详解

    在iOS开发中,理解`nil`、`NULL`和`NSNull`的区别至关重要,因为它们在不同的场景下有着特定的用途。以下是对这三个概念的详细解释: 1. `nil`: `nil`是Objective-C中的一个特殊值,通常用于对象指针。当你声明一个...

    ios开发面试题

    3. **dealloc方法的注意事项**:在`dealloc`方法中不应该再调用其他对象的方法,也不应该创建新的对象,以避免潜在的内存问题。 以上是针对iOS开发面试题的一些关键知识点的总结,希望能对准备面试的朋友有所帮助。

    IOS开发UITableViewCell自定义那点事.pdf

    在这段代码中,我们首先在`cellForRowAtIndexPath`方法中添加了一个UILabel,并设置了其自动换行和无限行数的属性,以便适应多行文本的展示。接着,在`heightForRowAtIndexPath`方法中,我们通过创建一个临时的...

    详解iOS应用开发中的ARC内存管理方式

    ARC(Automatic Reference Counting),自iOS 5起成为Objective-C的一个重要特性,它极大地简化了内存管理,由编译器自动处理对象的引用计数,避免了手动调用`retain`、`release`和`autorelease`等方法。值得注意的...

    ios9 单例模式区分arc与非arc宏的使用

    在iOS 9中,由于系统对内存管理和多线程的支持已经非常成熟,因此无论是使用ARC还是非ARC,单例模式都能很好地工作。不过,现代iOS开发推荐使用ARC,因为它能有效减少内存管理错误,提高开发效率。 总结来说,在iOS...

    ios 面试题

    **iOS中实现多线程同步与异步的方法:** - **同步:**使用GCD的`dispatch_sync`函数。 - **异步:**使用GCD的`dispatch_async`函数。 总结起来,iOS中的内存管理机制依赖于引用计数,通过不同的方法来增加或减少...

    iOS应用中UISearchDisplayController搜索效果的用法

    在iOS应用开发中,UISearchDisplayController是一个非常重要的组件,它提供了一种优雅的方式来实现搜索功能,特别是与UITableView结合使用时。UISearchDisplayController管理着一个UISearchBar和一个单独的...

    iOS必看的面试题梳理

    在iOS开发中,理解MVC可以帮助开发者更好地设计和组织代码,编写清晰且易于维护的应用程序。 对于那些处于非ARC工程中的类,如果想要采用ARC进行管理,可以使用-fobjc-arc标志;相反,在ARC环境下,如果需要使用非...

Global site tag (gtag.js) - Google Analytics