gpt4 book ai didi

ios - 在 Cocos2D 3.0 中可以删除的情况下检查 CCNode 是否有父节点

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

我有一个 NSMutableArray,其中包含我的 CCNode。我想使用 [scene addChild:][CCNode removeFromParentAndCleanUp:YES] 在我的 CCScene 上绘制和取消绘制它们。当它检查我的任何对象是否有父对象并且它同时在另一个类中被删除时,我的问题就出现了。你可以看到这段代码,它总是在那里崩溃:

for(int y = negativeY; y < positiveY; y++){
for(int x = negativeX; x < positiveX; x++){
if([[self.rockArray objectAtIndex:y] objectAtIndex:x] != nil){ //checking if object is not null
if([[[self.rockArray objectAtIndex:y] objectAtIndex:x] parent] == nil){ //Crashes here!
NSLog(@"Rock is not visible. Painting it");
[listener addChild:[[self.rockArray objectAtIndex:y] objectAtIndex:x]];
}else{
NSLog(@"Rock is already visible.");
}
}
}
}

日志消息是 *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[NSNull parent]:无法识别的选择器发送到实例 0x351d6b0”

也许我们可以使用Semaphores 来解决这个问题? (如果是这样,你能给我发一个 Objective C 的例子吗?)

感谢您的宝贵时间!

最佳答案

像这样检查你的对象:

[[self.rockArray objectAtIndex:y] objectAtIndex:x] != [NSNull null]

在发送 parent 消息之前。

崩溃的发生是因为由于某种原因,你的数组中的对象不是 CCNode 而是 NSNull,它不响应 parent 选择器。

你不应该检查它是否为 nil 因为集合不能保留 nil 指针

关于ios - 在 Cocos2D 3.0 中可以删除的情况下检查 CCNode 是否有父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26202538/

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