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

问题描述

| 我想创建一个方法,该方法接受一个块,将其保存在成员中,启动一个异步任务,然后在异步调用进行其完成回调时调用该块。 我是否必须保留街区?块内存的管理方式是否与其他任何对象相同?我可以合成一个属性来保存块吗?     

解决方法

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