内存释放是iphone开发过程中比较重的地方,所以在开辟内存后,我们必须小心、谨慎、并且及时的释放掉。
内存的释放,可以调用Dealloc函数,该函数可以释放,该类对象所占用的内存空间,为iphone节省宝贵的内存资源。
那么Dealloc函数是什么时候释放的哪?
测试代码如下:
我们先创建一个类:test_1,修改他的Dealloc函数
- (void)dealloc
{
NSLog(@"this is test_1 view did dealloc !");//输出内容,表示调用该函数,并释放资源
[super dealloc];
}
我们在另一个地方创建他
test_1 *m_text;
if (m_text==nil)
{
m_text = [[test_1 alloc] initWithNibName:nil bundle:nil];
}
int a = [m_text retainCount];//a = 1
[m_text retain];
int b = [m_text retainCount];//b = 2
[m_text release];
int c = [m_text retainCount];//c = 1
[m_text release];
int d= [m_text retainCount];//d = 1
m_text = nil;
int e= [m_text retainCount];//e = 0
经过测试发现,其实int d= [m_text retainCount];//d = 1该行代码中 d的理论之应该=0,表示该对象已经为空,其所占用的内存资源已经得到释放, 也就是执行到改行代码后,调用了函数
- (void)dealloc
{
NSLog(@"this is test_1 view did dealloc !");//输出内容,表示调用该函数,并释放资源
[super dealloc];
}
输出:
2011-10-25 16:05:13.333 Untitled[6358:207] test view did dealloc !
表示,对象m_text所占据的内存空间已经完全得到释放。
通过测试我们也发现,当一个对象的RetainCount函数=0的时候,系统会马上调用Dealloc函数释放该资源。
要想完全释放一个对象,的参考代码:
[m_text release];
m_text = nil;
THE END !
分享到:
相关推荐
### iOS开发内存分配详解 #### 一、内存分配概述 在iOS开发中,理解内存管理是至关重要的。本文档将详细介绍iOS开发中的内存分配机制,包括不同区域的内存分配方式及其特点。 #### 二、虚拟内存与物理内存 在iOS...
在iOS开发中,可以使用本地AutoreleasePool来创建新的自动释放池,以减少内存占用的峰值。 #### 4.3 Autorelease池和线程 Autorelease池可以与线程结合使用,以管理线程中的内存,这对于多线程编程尤为重要。 ###...
在iOS开发过程中,内存管理是至关重要的一个环节。苹果公司提供的Memory Management Programming Guide是一份详尽的指南,它深入解析了iOS系统中的内存管理机制,为开发者提供了宝贵的资源,帮助他们构建性能更佳、...
总结起来,通过研究“ios开发Puff游戏源码”,我们可以学习到iOS游戏开发的基础知识,包括Xcode的使用、游戏引擎的工作原理、面向对象编程、资源管理、事件处理和兼容性问题。这不仅有助于提升我们的编程技能,还...
### iOS开发技巧总结 #### 一、熟悉Swift或Objective-C **Swift**是苹果公司推荐的iOS应用开发语言,它不仅提供了安全性高的编程环境,还具备高性能和现代化的编程特性。Swift的设计使得开发者能更容易地编写出...
在iOS开发过程中,应用程序的稳定性和性能至关重要。然而,由于各种原因,开发者可能会遇到应用崩溃或闪退的情况。本文将详细介绍十二个常见的导致iOS应用崩溃的原因,并提供相应的预防措施。 1. **字典的key或...
在iOS开发中,UIApplication类扮演着至关重要的角色,它是整个应用程序的中枢,负责管理程序的生命周期、用户交互以及与系统事件的交互。UIApplication的实例通常是一个全局单例,可以通过`[UIApplication ...
这样可以更好地控制内存释放的时间点,从而优化内存使用效率。 **5. 内存垃圾回收** 尽管Objective-C不支持自动内存垃圾回收机制,但通过合理使用autorelease池和其他内存管理策略,可以实现类似的效果。 ### ...
### iPhone开发教程之iPhone内存释放注意事项两则 #### 内存管理基础知识 在iOS开发过程中,内存管理是一项非常重要的任务。对于iOS应用来说,如果内存管理不当,可能会导致程序崩溃或者被系统强制关闭。在...
在iOS开发领域,无论是新手还是有经验的开发者,都需要不断学习和总结。本文将从Xcode快捷键、Objective-C编程语言的关键点等方面进行深入探讨,旨在为新手提供一个全面的入门指南。 首先,Xcode作为iOS开发的主要...
内存管理是iOS开发中非常重要的一部分,尤其是在多核编程环境下。良好的内存管理不仅可以避免程序崩溃,还可以提高应用的性能。 ##### 内存引用计数 在Objective-C中,内存管理主要是通过引用计数(Retain Count)...
放入栈中。此区域的内存由编译器...了解并掌握内存管理是开发iOS应用的关键,合理的内存管理能确保应用的性能和稳定性。无论是手动的MRC还是自动的ARC,都需要开发者对内存管理有深入的理解,防止内存泄漏和意外崩溃。
3. **不要调用[super release]**:在Objective-C中,通常情况下不需要手动调用`[super release]`,因为ARC(自动引用计数)会自动管理对象的内存释放。 4. **字符串包含判断**:使用`NSString`的`containsString:`...
- **资源释放**:在任务完成后,使用GCD自动清理资源,避免内存泄漏。 - **避免竞态条件**:通过串行队列保证操作的顺序性,防止数据冲突。 总之,GCD作为Apple提供的强大工具,简化了多线程编程,让开发者能够更...
在iOS开发过程中,内存管理一直是开发者面临的一项重要挑战。不合理的内存管理不仅会导致应用运行缓慢,还可能导致应用崩溃,严重影响用户体验。本文旨在深入探讨iOS平台下的内存管理机制、 autorelease机制以及内存...
- 内存管理在iOS开发中的重要性。 - 如何分配内存空间存储对象。 - 内存泄漏的概念及其避免方法。 - **知识点**: - 内存分配与释放机制。 - ARC (Automatic Reference Counting) 的工作原理。 - 内存泄漏检测...
iOS开发中必备的OC知识涵盖了Objective-C(OC)语言的基础与高级特性,OC是苹果公司主要开发语言之一,用于iOS和Mac OS X应用程序的开发。熟悉OC语言对于从事iOS开发的开发者来说至关重要。 首先,Objective-C是一...
### iOS开发面试题详解 #### 一、Objective-C与Java/C++的区别 1. **语法差异**:Objective-C 是一种面向对象的编程语言,它...以上是针对iOS开发面试题的一些关键知识点的总结,希望能对准备面试的朋友有所帮助。
iOS开发总结涵盖了许多关键知识点,包括Xcode快捷键、Objective-C编程实践、内存管理、字符串操作、类别(Category)和扩展(Extension)、属性(Property)、Block、归档和序列化、对象比较、nil处理,以及iOS平台...