CALayer的delegate属性是弱链接,因此付给此属性的变量一定要在其他的什么地方retain。否则程序会崩溃。常见的错误如下
- (id) init {
....
MYDelegate* myDelegate = [[MYDelegate alloc] init] ;
myLayer.delegate = myDelegate;
....
}
这段代码会崩溃,因为ARC会在这段程序的结尾释放myDelegate,然后程序会出现EXC_i386_BPT或者EXC_BAD_ACCESS错误。