1
私はこのサイトを初めて使っています。あなたが助けてくれることを願っております。ipad app development:Block_copy not working
は、私は、関数で次のコード()から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])());
}
このコードは、ipadの中でiphoneで問題なく動作しますが、ありません。何が問題なのでしょうか?
また、ipadでは、Block_copy呼び出しを削除すると、同じ行が正常に実行されます。コピーされていない関数は返されないか、呼び出されてはいけないので、これは奇妙です(iphoneでは、この状況では最初のprintfでEXC_BAD_ACCESSを取得します)。
ありがとうございました。
sdkは4.0.2ですが、私はipadデバイスを持っていませんが(明日には取得します)、このコードをシミュレータで実行しました。 4.2へのアップデートはこの問題を解決するでしょうか? –
はい、もしあなたが4.0 SDKを使っているなら、あなたのiPad simは3.2 –
です。おそらくiPadと同様に4.2 SDKを入手する必要があります。 – JeremyP