gpt4 book ai didi

objective-c - free、dealloc、release 和 autorelease 之间有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 03:16:36 24 4
gpt4 key购买 nike

谁能解释一下 free()releaseautoreleasedealloc 之间的区别?

最佳答案

free()是一个 C 函数,用于处理通过 malloc() 获得的不再需要的内存或记录为需要 free() 释放其内存的其他功能,例如strdup() .

-dealloc是一个 Objective-C 选择器,当对象不再属于应用程序的任何部分时,由 Objective-C 运行时发送给该对象。

-release是您发送给对象的选择器,表示您正在放弃该对象的所有权。一旦一个对象不属于任何人,它就会被发送 -dealloc运行时消息。

-autorelease是您发送给对象的选择器,表示您正在放弃该对象的所有权。但是,如果现在没有人拥有该对象,则最终 -dealloc将被推迟到某个未指定的稍后时间点。事实上,你真正在做的是将你的所有权转移到一个自动释放池,然后当它本身被释放(或耗尽)时释放它。

您绝不能发送 -dealloc到一个对象,除了 super在对象自己的 -dealloc方法。

关于objective-c - free、dealloc、release 和 autorelease 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3335350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com