Ios 发送到解除分配对象的消息'_UITextTiledLayer';对象
我有一个Ios 发送到解除分配对象的消息'_UITextTiledLayer';对象,ios,objective-c,uiview,uiscrollview,Ios,Objective C,Uiview,Uiscrollview,我有一个UIScrollView,在其内容视图上绘制。我也有缩放功能。我正在添加UIView和UITextViews作为缩放时的子视图,并在用户缩小缩放时删除UIView和UITextViews。有时它工作得很好,但有时它会崩溃 此外,console continuous还显示了这些和更多功能的不同组合: CALayerGetSuperlayer called on instance of UIScrollViewDelayedTouchesBeganGestureRecognizer CALa
UIScrollView
,在其内容视图上绘制。我也有缩放功能。我正在添加UIView
和UITextViews
作为缩放时的子视图,并在用户缩小缩放时删除UIView和UITextViews
。有时它工作得很好,但有时它会崩溃
此外,console continuous还显示了这些和更多功能的不同组合:
CALayerGetSuperlayer called on instance of UIScrollViewDelayedTouchesBeganGestureRecognizer
CALayerGetSuperlayer called on instance of __NSCFDictionary
CALayerGetSuperlayer called on instance of __NSArrayM
CALayerGetSuperlayer called on instance of __NSCFString
CALayerGetSuperlayer called on instance of __NSCFType
我附上了一个僵尸模板的仪器截图。它显示发送到解除分配对象的消息的摘要
我的一些代码将有助于解决这个问题。
我返回CATiledLayer以确保缩放的内容清晰
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];
tiledLayer.levelsOfDetail = 4;
tiledLayer.levelsOfDetailBias = 4;
}
return self;
}
+ layerClass
{
return [CATiledLayer class];
}
- (void)dealloc
{
CATiledLayer *tiledLayer = (CATiledLayer *)self.layer;
tiledLayer.contents=nil;
tiledLayer.delegate=nil;
[tiledLayer removeFromSuperlayer];
}
也许我错了,但是,为什么要在dealoc
方法中实例化CATiledLayer
,这在物理上是错误的。。。
据我所知,此错误的原因可能是您正在尝试解除锁定一个已解除锁定的对象,或者您正在解除锁定的对象是空的在解除锁定中,我正在从superview中删除tiledLayer,因为我必须停止tiledLayer的异步绘制。谢谢您的建议对我有用。我从dealoc方法中删除了所有CATiledLayer,只放了“self.layer.contents=nil;”。