gpt4 book ai didi

objective-c - 使用 Objective C 访问 Sprite in Touch 事件

转载 作者:行者123 更新时间:2023-11-28 23:15:43 25 4
gpt4 key购买 nike

我试图让 Sprite 移动到用户触摸的点。我的问题是我在 init 中这样声明 Sprite :

CCSprite *ball = [CCSprite spriteWithFile:@"ball.png"                            
rect:CGRectMake(0, 0, 20, 20)];

在我的触摸事件中:

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{

我引用了这个球,它说它是“未定义的”。由于我对其他语言范围的理解,我假设我需要将“ball”设为全局变量,对吗?我读过全局变量在 Objective-C 中通常是“不受欢迎的”。为什么会这样?跟内存有关系吗?

如果您有什么建议,请告诉我是否需要在我的应用程序结束时解除分配。我真的是 iOS 开发的初学者。

任何建议都会有很大的帮助!

最佳答案

全局变量不仅在 Objective C 中不受欢迎,对于大多数语言来说,它们通常也是不好的做法。这会导致糟糕的程序设计。

一般来说,如果您希望一个对象在其整个生命周期中创建并继续访问另一个对象,而不仅仅是在一个方法中,您应该将它分配给一个实例变量。

在这种情况下,您似乎正在使用 cocos2d - 因此您的场景很可能应该有一个球实例变量。你应该在你的场景被释放时释放它(你不会在 Objective C 中调用 dealloc),如果不是之前的话。

如果您不确定何时发布它,您可能需要阅读 the Memory Management Programming Guide .首先,如果您希望该实例变量不会使您的程序崩溃,则需要保留该 sprite。

关于objective-c - 使用 Objective C 访问 Sprite in Touch 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com