我想创建一个接收块的方法,将其保存在成员中,启动异步任务,然后在异步调用完成回调时调用该块。
我必须保留该块吗?块内存的管理方式与其他任何对象相同吗?我可以合成一个属性来保存块吗?
答案 0 :(得分:36)
块与内存管理的其他对象类似,但不一样。当创建访问局部变量的块时,它将在堆栈上创建。这意味着只有在其范围存在的情况下它才有效。要保存此块以供以后使用,您必须copy
将其复制到堆中。因此,为了防止此类块出现问题,您应该在将块存储到实例变量中之前复制而不是保留块。
答案 1 :(得分:2)
您必须复制该块,是的。块是常规的Objective-C对象。