3

ブロックは、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 (code=2, address=0x0) エラーが発生します。ここで何が起こっているのですか?

4

1 に答える 1

1

ブロックへの呼び出し自体がオブジェクトの宣言を実行しているため、その周りに中かっこのペアを追加してみてください。

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

なぜ最初はそのまま実行されてクラッシュするのかはわかりませんが。

于 2012-08-24T00:51:16.530 に答える