私はObjective-Cでブロックを使用していますが、ブロックをインスタンス変数に代入する場合は、ブロックをcopy
にしなければならない理由を説明していませんassign
?例えばなぜobjcブロックの割り当ては 'copy'でなく 'assign'でなければならないのですか?
:まあ
typedef void (^MyBlock)();
@interface SomeClass : NSObject
{
MyBlock myblock;
// Other ivars
}
@property (nonatomic, copy) MyBlock myblock; // Why must this be 'copy'???
// other declarations
@end
I.e.ブロックは速度のためにスタック上に作成され、-copyはスタックからヒープに移動します。 – bbum