该块是GridScrollView中定义的属性:
typedef BoxView* (^RenderBlock)(NSDictionary* json, CGRect);
@interface GridScrollView : PagingScrollView
@property (nonatomic, copy) RenderBlock renderBlock;
我想这样用:
switch(current.tag)
{
case 1:
scrollView.renderBlock = ^(NSDictionary* json, CGRect frame)
{
//returns a boxview
}
break;
case 2:
scrollView.renderBlock = ^(NSDictionary* json, CGRect frame)
{
//returns a different boxview
}
break;
}
虽然这个代码第一次工作正常,但是当它被重新分配时,我得到一个EXC_BAD_ACCESS(代码= 2,地址= 0x0)错误。这里发生了什么?
答案 0 :(得分:1)
由于对块的调用本身正在执行对象的声明,因此请尝试在其周围添加一对额外的括号:
case 1: {
scrollView.renderBlock = ^(NSDictionary* json, CGRect frame) {
//returns a boxview
}
}
break;
虽然我不知道它为什么会像第一次那样运行然后崩溃。