Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Objective c CALayer addsublayer不添加子层_Objective C_Core Animation_Calayer - Fatal编程技术网

Objective c CALayer addsublayer不添加子层

Objective c CALayer addsublayer不添加子层,objective-c,core-animation,calayer,Objective C,Core Animation,Calayer,我遇到了最奇怪的问题:有时将子层添加到CALayer中不起作用([layer addSublayer:child]),即子层计数保持在0,并且没有任何内容被绘制到屏幕上 有时它确实起作用,子层显示在屏幕上,正如我预期的那样。如果没有,通常执行干净的构建会修复它,但并不总是这样。我还尝试从终端运行我的应用程序的两个实例,通常第二个实例显示有问题的行为 以下是(缩写)代码: 子层是背景设置为RGB颜色的基本层 调试输出: layer: <CALayer: 0x1982b0> X: 50.

我遇到了最奇怪的问题:有时将子层添加到CALayer中不起作用(
[layer addSublayer:child]
),即子层计数保持在0,并且没有任何内容被绘制到屏幕上

有时它确实起作用,子层显示在屏幕上,正如我预期的那样。如果没有,通常执行干净的构建会修复它,但并不总是这样。我还尝试从终端运行我的应用程序的两个实例,通常第二个实例显示有问题的行为

以下是(缩写)代码:

子层是背景设置为RGB颜色的基本层

调试输出:

layer: <CALayer: 0x1982b0> X: 50.00 Y: -90.00 width: 200.00 height: 200.00
Retain count before: 2
Retain count after: 2 layer: <CALayer: 0x1982b0>
Sublayercount: 0
图层:X:50.00 Y:-90.00宽度:200.00高度:200.00
保留前计数:2
保留计数后:2层:
子层计数:0
当它工作时,上面的输出显示保留计数正确增加到
3
,子层计数正确增加到
1

CALayers有什么特别之处吗?
addSublayer
是否依赖其他内容/执行子层的有效性检查

有人能提出一种调试方法吗?有没有办法使用调试器进入
addSublayer


谢谢!马克。

我终于明白了。有时候只谈论(好吧,发帖)这个问题是有帮助的

结果是我初始化保存层的自定义视图的方式有问题。对应用程序控制器和视图的
awakeFromNib
调用之间存在竞争条件。应用程序控制器将加载自定义层,但有时自定义视图尚未初始化


解决方案是将app controller中视图的初始化代码从
awakeFromNib
移动到
applicationdidfishlaunching

我终于找到了答案。有时候只谈论(好吧,发帖)这个问题是有帮助的

结果是我初始化保存层的自定义视图的方式有问题。对应用程序控制器和视图的
awakeFromNib
调用之间存在竞争条件。应用程序控制器将加载自定义层,但有时自定义视图尚未初始化


解决方案是将应用程序控制器中视图的初始化代码从
awakeFromNib
移动到
applicationdidfinishLaunching

重新计数
是无用的;别叫它


很高兴你解决了这个问题。

retainCount
没用;别叫它


很高兴你解决了这个问题。

-retainCount几乎从来都不是调试的好基础。-retainCount几乎从来都不是调试的好基础。太棒了,我需要一个。或者是一个橡皮鸭调试标签?太棒了,我需要一个。或者是一个橡皮鸭调试标签?
layer: <CALayer: 0x1982b0> X: 50.00 Y: -90.00 width: 200.00 height: 200.00
Retain count before: 2
Retain count after: 2 layer: <CALayer: 0x1982b0>
Sublayercount: 0