我有一些自定义UIView
对象,它们都像这样处理绘图:
- (void)drawRect:(CGRect)rect {
// ^ I init the layers 1 and 2
[self.layer insertSublayer:layer1 atIndex:0]; // 1 or more
[self.layer insertSublayer:layer2 atIndex:1];
}
他们也有 a- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
里面除了 a 之外什么都没有NSLog
。
我将它们全部添加到我的 main 中ViewController
,如下所示:
- (void)viewDidLoad
{
[super viewDidLoad];
CustomView *myViewWith1Layer = [[CustomView alloc] initWithFrame:CGRectMake(20, 20, 440, 260)];
[self.view addSubview:myViewWith1Layer];
CustomViewLayered *myViewWith2Layer = [[CustomViewLayered alloc] initWithFrame:CGRectMake(40, 260, 200, -120)];
[self.view addSubview:myViewWith2Layers];
}
当我运行我的应用程序时,如果我点击一个只有一个图层的视图 - 我会NSLog
显示我的,一切都很好。另一方面,如果我点击具有 1+ 层的视图,则应用程序崩溃(objc_msgSend
日志显示为。我想这与我启用的ARC"EXC_BAD_ACCES (code=1, address=...")
有某种关系。
如何在视图中添加多个图层,而不会被ARC弄乱?