ios - CCMenuItemLabel – "The block will be ' 已复制'。"

标签 ios objective-c cocos2d-iphone objective-c-blocks

关于“该 block 将被‘复制’”语句的简单问题。我对 Objective-C 中的 block 的理解和使用不太满意,“复制”是什么意思?如果有人可以解释或向我指出可以的资源,我将不胜感激。谢谢

*此方法来自Cocos2d文档。

+ (id) itemWithLabel:(CCNode< CCLabelProtocol, CCRGBAProtocol > *) label
block:(id sender) block

创建一个带有标签和要执行的 block 的 CCMenuItemLabel。该 block 将被“复制”。

最佳答案

block 类似于结构,其中包含一组信息,例如指向函数的指针。 默认情况下,当您创建 block 时,它是在堆栈上创建的,您必须将其复制到堆中才能在堆栈外调用。 在此示例中,此方法将返回一个项目对象,并将 block 参数(可能仍在堆栈上)复制到堆中,以便在需要时能够使用它。

关于ios - CCMenuItemLabel – "The block will be ' 已复制'。",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21197140/

相关文章:

objective-c - Restkit [NSManagedObject managedObjectContext] 返回不同的实例

iphone - 游戏中心cocos2d问题

ios - 错误 : The application bundle does not contain a valid identifier

iPhone/iOS JSON解析教程

ios - 是否可以使用 Storyboard从 swift 类调用 Objective c View Controller 类?

objective-c - 保护关键代码不被再次调用

iphone - 如何在cocos 2d iphone中处理单个场景中的多个图层

ios - Xcode 错误 - 文件中缺少所需的架构 i386

ios - 是否有解决与cordova-plugin-fcm-with-dependecy-updated 和cordova ios 冲突的解决方法

ios - 从 UIImage 更改 ViewController