Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 重新分配块目标-c_Objective C_Ios5_Objective C Blocks - Fatal编程技术网

Objective c 重新分配块目标-c

Objective c 重新分配块目标-c,objective-c,ios5,objective-c-blocks,Objective C,Ios5,Objective C Blocks,块是GridScrollView中定义的属性: typedef BoxView* (^RenderBlock)(NSDictionary* json, CGRect); @interface GridScrollView : PagingScrollView @property (nonatomic, copy) RenderBlock renderBlock; 我想这样使用它: switch(current.tag) { case 1: scrollView.rend

块是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)错误。这里发生了什么?

由于对块的调用本身正在执行对象的声明,请尝试在其周围添加一对额外的大括号:

case 1: {
            scrollView.renderBlock = ^(NSDictionary* json, CGRect frame) {
             //returns a boxview
            }
        }
        break;

虽然我不知道为什么它会第一次运行然后崩溃。

如果发生崩溃,请发布回溯跟踪。它为什么工作:。正如托马斯所解释的,这是一个范围问题。也可以看到Zebra先生的答案,在底部——我应该说问题在于对象的初始化,而不是它的声明。