def test_typedSelector(self):
        @objc.typedSelector(b"I@:qq")
        def mySelector_arg_(self, a, b):
            return 4

        self.assertIsInstance(mySelector_arg_, objc.selector)
        self.assertEqual(mySelector_arg_.signature, b"I@:qq")
        self.assertEqual(mySelector_arg_.selector, b"mySelector:arg:")

        self.assertRaises(TypeError, objc.typedSelector(b"v@:i"), None)
        self.assertRaises(TypeError, objc.typedSelector(b"v@:i"), 42)
Example #2
0
    def test_typedSelector(self):
        @objc.typedSelector(b"I@:qq")
        def mySelector_arg_(self, a, b):
            return 4

        self.assertIsInstance(mySelector_arg_, objc.selector)
        self.assertEqual(mySelector_arg_.signature, b"I@:qq")
        self.assertEqual(mySelector_arg_.selector, b"mySelector:arg:")

        self.assertRaises(TypeError, objc.typedSelector(b"v@:i"), None)
        self.assertRaises(TypeError, objc.typedSelector(b"v@:i"), 42)
Example #3
0
def signature(signature):
    """Returns an objc.signature with 'i' and 'f' letters changed to correct NSInteger and
    CGFloat values.
    """
    signature = bytes(signature, encoding='ascii')
    signature = signature.replace(b'i', objc._C_NSInteger)
    signature = signature.replace(b'I', objc._C_NSUInteger)
    signature = signature.replace(b'f', objc._C_CGFloat)
    return objc.typedSelector(signature)
Example #4
0
    def event_handler(f, assertion = running_on_thread_named('MainThread')):

        def handle_exceptions(*n, **kw):
            try:
                return assert_message_queue(f, assertion)(*n, **kw)
            except Exception:
                unhandled_exc_handler()
                TRACE('stack above exception was:')
                trace_stack()
                if kw.get('trace_locals', True):
                    TRACE('locals are:')
                    trace_locals(locals())

        handle_exceptions.__name__ = f.__name__
        if hasattr(f, 'signature'):
            try:
                import objc
                return objc.typedSelector(f.signature)(handle_exceptions)
            except Exception:
                unhandled_exc_handler()

        return handle_exceptions