ipad app开发:Block_copy无效

时间:2010-11-29 14:33:05

标签: objective-c

我是这个网站的新手,希望你能提供帮助。

我从function()中的以下代码中得到EXC_BAD_ACCESS错误:

typedef int (^BlockDef)();
BlockDef getBlockDef(int d)
{
    BlockDef def = Block_copy(^()
    {
        return d;
    });

    return def;
}

void function()
{
    BlockDef def1 = getBlockDef(1);
    BlockDef def2 = getBlockDef(2);

    printf("%d\n",def1());
    printf("%d\n",def2());

    NSMutableArray * arr = [NSMutableArray array];
    [arr addObject:def1];
    [arr addObject:def2];

    printf("%d\n",((BlockDef) [arr objectAtIndex:0])()); // **** EXC_BAD_ACCESS here
    printf("%d\n",((BlockDef) [arr objectAtIndex:1])());
}

此代码在iphone中运行没有任何问题,但在ipad中没有。可能是什么问题?

此外,在ipad中,当我删除Block_copy调用时,它会成功运行同一行。这很奇怪,因为不能返回或不应该调用非复制函数(在iphone中,在这种情况下,我在第一次打印时得到EXC_BAD_ACCESS)。

感谢您的协助。

1 个答案:

答案 0 :(得分:1)

当你说iPad时,你的意思是3.2吗?如果是这样,这将无效。 3.2中有一个半完成的块API,可以让你做任何事情,除了复制块。

如果你的iPad是4.2,但这仍然不起作用,请告诉我。