1
4

2 回答 2

0

acceptInputForMode:beforeDate: 只运行一次循环。一旦处理了任何输入(定时器除外),它就会退出。runUntilDate:但是继续运行循环,直到到达日期。

于 2011-01-03T00:30:53.077 回答
0

这有点奇怪,但这里有一个解决方法:

framework 'Foundation'
framework 'AppKit'

class KCUpcase
  def upcase(pasteboard, userData: s_userdata, error: s_error)
    incoming_string = pasteboard.stringForType "public.utf8-plain-text"
    outgoing_string = incoming_string.upcase
    pasteboard.clearContents
    pasteboard.setString(outgoing_string, forType: "public.utf8-plain-text")
  end
end

puts "Starting…"
NSRegisterServicesProvider(KCUpcase.new, "Upcase")
puts "Registered…"
later = NSDate.dateWithTimeIntervalSinceNow(5)
NSRunLoop.currentRunLoop.runUntilDate later
puts "Done"

基本上,您需要在分派 runloop 请求之前定义时间戳,否则主循环在获取指令之前就存在。正如您所发现的,这并不是真正的 MacRuby 错误,但仍然希望对您有所帮助。

于 2010-11-22T07:55:24.947 回答