OC 内存管理黄金法则
发布日期:2025-04-27 12:08:27 浏览次数:19 分类:精选文章

本文共 792 字,大约阅读时间需要 2 分钟。

在内存管理方面有一个基本的规则需要遵守:每当使用alloc[mutable]copy[withZone:]retain来增加引用计数的方法时,必须对应地使用releaseautorelease进行释放。

理解:对象自身负责管理retainCount的增减,这有助于显著降低内存泄漏的可能性。

实例:

@implementation Person- (void) setDog:(Dog *)aDog{  if(_dog != aDog){    [_dog release];    _dog = [aDog retain];  }}- (id) dealloc{  [super dealloc];  [_dog release];} @end

在这个Person类中,由于setDog函数会对dog对象进行retain操作,但作为使用者你并不知道内部对这个dog对象进行了多少次retain。因此,将release操作放在dealloc中是一个不错的选择,这样在对象被销毁时会自动释放。

补充:对于一些初学者来说,可能会疑惑,随着ARC的出现,是否需要遵循传统的内存管理规则。实际上,ARC和传统的内存管理还是有区别的。ARC是Xcode为我们在源代码中添加了我们手动需要添加的内存管理语句,但本质上它仍然属于手动内存管理的范畴。了解这一点对开发来说非常有帮助。这种方法的好处是将内存管理的重担交给了Xcode,而不是交给运行时环境。如果使用垃圾回收机制来管理内存,运行时环境需要消耗额外的资源,尤其是内存资源。而在Java的亲儿子Android中,由于垃圾回收机制的存在,安卓手机需要配备3GB的内存才能与苹果的1GB内存相比。这额外的2GB内存去哪里了?那就是垃圾回收了。

转载自:https://www.cnblogs.com/ddhjy/p/4487611.html

上一篇:oc57--Category 分类
下一篇:OC 中的重写 OC中没有重载 以及隐藏

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2026年05月30日 22时49分02秒