如何删除CALayer的面具?

时间:2013-08-09 12:49:13

标签: iphone cocoa-touch core-animation calayer

大家好,所以这是我关于SO的第一个问题,这几个小时令人难以置信。这是我的代码。

.m

- (IBAction)changeMask:(id)sender {
if (!mask) {

    [wallpaperImageView.layer setMask:captionTextField.layer];

    NSLog(@"%@",captionTextField.layer);
    mask = YES;
}
else {

    wallpaperImageView.layer.mask = nil;
    NSLog(@"%@",captionTextField);
    mask = NO;
}


}

每次调用wallpaperImageView.layer.mask = nil;时,captionTextField.layer都会被取消分配。我在我的项目中使用ARC。我使用@property (nonatomic, strong)分配了captionTextField我使用了NSZombies并得到*** -[CALayer retain]: message sent to deallocated instance 0x85b5e20

如何让CALayer无法解除分配?

1 个答案:

答案 0 :(得分:0)

您没有提供足够的信息。谁拥有你的captionTextField?

发布显示如何创建captionTextField的代码,以及存储它的位置。你需要在某个地方保存一个强引用(强大的实例变量或属性),否则一旦没有人抓住它就会立即释放它。

将wallpaperImageView的图层蒙版设置为nil会导致释放captionTextField没有意义,除非您创建了captionTextField并且没有对其进行强引用。