セレクタalertDidEnd:returnCode:contextInfo:
を実装しました。最後のパラメータcontextInfoはvoidポインタです。メソッドを呼び出す前に、次のようにポインタをまとめます。私のMacrubyポインタがvoidポインタとして渡されても生き残れないのはなぜですか?
# in windowShouldClose
p = Pointer.new(:boolean)
p.assign(true)
その後、私はメソッドを呼び出すと、その本体の内側に次き:
# in alertDidEnd
puts p[0] # => a number like 245
puts p.cast!('B')[0] # => false (rather than true)
は私が間違って何をしているのですか?これは、呼び出し元のメソッド(windowShouldClose)がこのセレクタの前に独自のスレッドで終了するためです(ちょうど推測)。
オブジェクトポインタとしてポインタを作成する必要がありますか?
# make a pointer to an object and assign to it the instance of TrueClass
p = Pointer.new(:id)
p.assign(true)
これについては、O'reilly Macruby Bookについてお読みください。
ありがとうございます!