gpt4 book ai didi

ios - 保持指向本地对象的强指针

转载 作者:行者123 更新时间:2023-11-29 10:55:31 24 4
gpt4 key购买 nike

我在正在阅读的一本书中遇到了这件事,它让我思考:

“当你分配一个 block 时,它是在堆栈上创建的。这意味着,即使你保持对它的强引用,稍后调用它也会导致崩溃,因为内存会尽快被销毁你离开定义它的方法。”

我想如果我有一个指向某物的强指针,它就会保持活力?这是否意味着这不适用于在堆栈上分配的对象?

我正在尝试想一个不使用 block 的例子......(例如,指针 - 可能是一个 ivar - 指向堆栈分配的对象,即使指针还活着,它也会被销毁)

最佳答案

对象永远不会在 Objective-C 的堆栈上分配。然而, block 是特殊的,因为它们是堆栈分配的。所以如果你想保留一个指向 block 的指针,你必须首先使用 Block_copy 复制它并使用副本,然后使用 Block_release 释放它。如果要在声明 block 的作用域被销毁后使用该 block ,则必须这样做。有关此问题的更多信息:https://developer.apple.com/library/mac/documentation/cocoa/Conceptual/Blocks/Articles/bxUsing.html (在“复制 block ”下)。不过,这同样不适用于常规对象。

关于ios - 保持指向本地对象的强指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18586888/

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