CALayer的delegate属性是弱链接,因此付给此属性的变量一定要在其他的什么地方retain。否则程序会崩溃。常见的错误如下
- (id) init {
....
MYDelegate* myDelegate = [[MYDelegate alloc] init] ;
myLayer.delegate = myDelegate;
....
}
这段代码会崩溃,因为ARC会在这段程序的结尾释放myDelegate,然后程序会出现EXC_i386_BPT或者EXC_BAD_ACCESS错误。
本文讲解了CALayer的delegate属性为何设置为弱引用,并通过一个典型示例说明了如果未正确处理delegate对象可能导致的程序崩溃问题。
8856

被折叠的 条评论
为什么被折叠?



