Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(swift/xcode)错误消息:';将此节点设置为父节点将创建一个循环';_Swift_Xcode_Sprite Kit - Fatal编程技术网

(swift/xcode)错误消息:';将此节点设置为父节点将创建一个循环';

(swift/xcode)错误消息:';将此节点设置为父节点将创建一个循环';,swift,xcode,sprite-kit,Swift,Xcode,Sprite Kit,这个错误消息是什么意思?我在谷歌上找不到任何关于它的信息。任何修复它的方法都很好。以下是完整的错误消息供参考: 2017-05-15 10:09:10.942俄罗斯方块[2258:77198]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“将此节点设置为父节点将创建一个循环:名称:'(null)'位置:{6,-6}刻度:{1.00,1.00}累计帧:{{12,-412},{200,400}” ***第一次抛出调用堆栈: ( 0 CoreFou

这个错误消息是什么意思?我在谷歌上找不到任何关于它的信息。任何修复它的方法都很好。以下是完整的错误消息供参考:

2017-05-15 10:09:10.942俄罗斯方块[2258:77198]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“将此节点设置为父节点将创建一个循环:名称:'(null)'位置:{6,-6}刻度:{1.00,1.00}累计帧:{{12,-412},{200,400}”
***第一次抛出调用堆栈:
(
0 CoreFoundation 0x000000010fa4dd4b例外预处理+171
1 libobjc.A.dylib 0x000000010cacb21e objc_异常_抛出+48
2 CoreFoundation 0x000000010fab72b5+[N异常提升:格式:][197
3 SpriteKit 0x000000010cfe3134-[SKNode(setParent)setParent:+87
4 SpriteKit 0x000000010cfdc376-[SKNode insertChild:atIndex:+230
5 SpriteKit 0x000000010cfdc26f-[SKNode addChild:+68
6俄罗斯方块0x000000010c4bafe0_TFC6Tetris9GameScenecfT4sizeVSC6CGSize_S0_+1376
7俄罗斯方块0x000000010c4bb080 TFC6俄罗斯方块9gamescenecFT4sizevsc6cgsize S0 64
8俄罗斯方块0x000000010c4c23f2 _TFC6俄罗斯方块18GameViewController11ViewDidLoadFT_T_+274
9俄罗斯方块0x000000010c4c3222 _TTOFC6TTERS18游戏视图控制器11VIEWDIDLOADFT_T_+34
10 UIKit 0x000000010d368a3d-[UIViewController loadViewIfRequired]+1258
11 UIKit 0x000000010d368e70-[UIViewController视图]+27
12 UIKit 0x000000010d2324b5-[UIWindow AddRootViewControllerServiceWifPossible]+71
13 UIKit 0x000000010d232c06-[UIWindow\u setHidden:强制:][293
14 UIKit 0x000000010d246519-[UIWindow makeKeyAndVisible]+42
15 UIKit 0x000000010d1bef8d-[UIApplication\u callInitializationDelegatesForMainScene:transitionContext:+4818
16 UIKit 0x000000010d1c50ed-[UIApplication\u在主场景中运行:transitionContext:completion:+1731
17 UIKit 0x000000010d1c226d-[UIApplication WorkspaceDiEndTransaction:][188
18 FrontBoardServices 0x0000000116a4b6cb\uuu FBSSERIALQUEUE\u正在调用\uu OUT\u到\uu块\uuu+24
19 FrontBoardServices 0x0000000116a4b544-[FBSSerialQueue\u performNext]+189
20 FrontBoardServices 0x0000000116a4b8cd-[FBSSerialQueue _performNextFromRunLoopSource]+45
21 CoreFoundation 0x000000010f9f2761 \uuuuu CFRUNLOOP \u正在调用\uu OUT \uu以执行\uuu函数\uuuu+17
22 CoreFoundation 0x000000010f9d798c\uu CFRunLoopDoSources0+556
23 CoreFoundation 0x000000010f9d6e76 _uCFRUnloopRun+918
24 CoreFoundation 0x000000010f9d6884 CFRunLoopRunSpecific+420
25 UIKit 0x000000010d1c0aea-[UIApplication_run]+434
26 UIKit 0x000000010d1c6c68 UIApplicationMain+159
27俄罗斯方块0x000000010c4c858f主+111
28 libdyld.dylib 0x00000001109fd68d开始+1
29???0x0000000000000001 0x0+1
)
libc++abi.dylib:以NSException类型的未捕获异常终止

(lldb)

可能发生的情况是您试图创建一个矛盾的节点层次结构

您可能知道,节点可以有父节点和子节点。您需要确保,在设置这些节点的关系时,不会创建一个“循环”,其中子节点最终成为其父节点的祖先

例如,如果您有一个节点“a”,并且您创建了一个新的节点“B”,并将其添加为子节点,那么您就不能掉头将“a”添加为“B”的子节点,因为这将创建一个循环

同样,你不能让“A”和“B”的子代一起,然后让“C”成为“B”的子代,然后让“A”成为“C”的子代。等等基本上,您不能出现节点同时显示为祖先和后代的情况


这很重要,因为层次结构需要定义良好。例如,您需要能够遍历节点的祖先以找到“根”节点,或者计算出其在更高节点的参考坐标系中的位置。如果您创建了一个祖先循环,那么这些对节点祖先的递归搜索将创建无限循环,因此避免它们是很重要的。SpriteKit为您提供可靠的服务,并在您建立关系时进行检查,以确保您没有这样做。因此,出现了错误。

我意识到我所做的是——我有两个节点的名称相似,通过使用错误的节点,将A设置为B的子节点,将B设置为A的子节点,而不是将B设置为C的子节点(类似于A)。啊,是的,这可以解释这一点。帮助避免这种情况的一个好习惯是确保所有节点的名称都是唯一的。