선택기 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에 대해 읽었습니다.
감사합니다.