我是否必须在Objective-C中为iOS保留块?

evi*_*red 12 objective-c ios objective-c-blocks

我想创建一个方法,接受一个块,将其保存在一个成员中,启动一个异步任务,然后在异步调用完成回调时调用该块.

我必须保留该块吗?块内存的管理方式与其他任何对象相同吗?我可以合成一个属性来保存块吗?

ugh*_*fhw 36

块与内存管理的其他对象类似,但不一样.当创建访问局部变量的块时,它将在堆栈上创建.这意味着只有在其范围存在的情况下它才有效.要保存此块以供以后使用,必须copy将其复制到堆中.因此,为了防止出现此类块的问题,您应该在将块存储在实例变量中之前复制而不是保留块.