大家好,所以这是我关于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无法解除分配?
答案 0 :(得分:0)
您没有提供足够的信息。谁拥有你的captionTextField?
发布显示如何创建captionTextField的代码,以及存储它的位置。你需要在某个地方保存一个强引用(强大的实例变量或属性),否则一旦没有人抓住它就会立即释放它。
将wallpaperImageView的图层蒙版设置为nil会导致释放captionTextField没有意义,除非您创建了captionTextField并且没有对其进行强引用。