Ejemplo n.º 1
0
        public void Execute(object parameter, NSObject source)
        {
            var responder = ResponderForSelector(executeSelector);

            if (responder == null)
            {
                return;
            }

            if (selectorSupportsParameter)
            {
                var parameterProxy = ParameterProxy.Create(parameter);
                try {
                    objc_msgSend_void_IntPtr_IntPtr(
                        responder.Handle,
                        executeSelector.Handle,
                        source == null ? IntPtr.Zero : source.Handle,
                        parameterProxy == null ? IntPtr.Zero : parameterProxy.Handle);
                    return;
                } finally {
                    parameterProxy?.Dispose();
                }
            }

            objc_msgSend_void_IntPtr(
                responder.Handle,
                executeSelector.Handle,
                source == null ? IntPtr.Zero : source.Handle);
        }
Ejemplo n.º 2
0
        public bool CanExecute(object parameter, NSObject source)
        {
            if (canExecuteSelector != null)
            {
                var responder = ResponderForSelector(canExecuteSelector);
                if (responder != null)
                {
                    var parameterProxy = ParameterProxy.Create(parameter);
                    try {
                        return(objc_msgSend_bool_IntPtr_IntPtr(
                                   responder.Handle,
                                   executeSelector.Handle,
                                   source == null ? IntPtr.Zero : source.Handle,
                                   parameterProxy == null ? IntPtr.Zero : parameterProxy.Handle));
                    } finally {
                        parameterProxy?.Dispose();
                    }
                }
            }

            return(ResponderForSelector(executeSelector) != null);
        }