def main_thread(func, *args, **kwargs): """ Schedue `func` to be called on the main thread. """ pool = NSAutoreleasePool.new() obj = MainThreadHelper.new() obj.func = lambda: func(*args, **kwargs) selector = objc.selector(obj.onMainThread, signature='v@:') later = obj.performSelectorOnMainThread_withObject_waitUntilDone_ later(selector, None, False)
def object_and_selector_for_callback(callback, *args, **kwargs): pool = NSAutoreleasePool.new() obj = MainThreadHelper.new() obj.func = lambda: callback(*args, **kwargs) selector = objc.selector(obj.onMainThread, signature='v@:') return obj, selector