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

我想要做一个方法,在一个块中,将其保存在一个成员,启动一个asynchronous任务,然后在asynchronous调用完成callback时调用块。

我必须保留这个块吗? 块内存是否像其他对象一样pipe理? 我可以合成一个属性来保存块吗?

块与内存pipe理的其他对象相似,但不一样。 当创build访问局部variables的块时,它将在堆栈上创build。 这意味着只要其范围存在,它就是有效的。 为了以后保存这个块,你必须copy它,把它复制到堆中。 因此,为了防止出现此类块的问题,您应该在将块存储在实例variables中之前复制而不是保留块。

你必须复制块,是的。 块是常规的Objective-C对象。