NSControl and subclasses have an action property and a target property but no 
method to set both at once (in opposition to, say, NSTimer, which has methods 
that accept a target and a selector at the same time).

Félix

> Le 30 déc. 2015 à 11:52:41, James Campbell <ja...@supmenow.com> a écrit :
> 
> Do you have an example of use ?
> 
> Sent from my iPhone
> 
>> On 30 Dec 2015, at 15:48, Félix Cloutier <felix...@yahoo.ca> wrote:
>> 
>> How do you import the API to Swift when the target and action properties are 
>> separate? 
>> 
>> Félix
>> 
>>> Le 30 déc. 2015 à 09:36:24, James Campbell via swift-evolution 
>>> <swift-evolution@swift.org> a écrit :
>>> 
>>> Ah good point, in swift you can return a function as a closure (see that 
>>> link) so interface builder could bind an action. Like so :
>>> 
>>> addAction(myClass.actionFunction)
>>> 
>>> Instead of what it does now:
>>> 
>>> addAction(myClass, action:"actionFunction:")
>>> 
>>> 
>>> Sent from my iPhone
>>> 
>>>> On 30 Dec 2015, at 14:14, Jean-Daniel Dupas <mail...@xenonium.com> wrote:
>>>> 
>>>> 
>>>>> Le 30 déc. 2015 à 12:21, James Campbell via swift-evolution 
>>>>> <swift-evolution@swift.org> a écrit :
>>>>> 
>>>>> These are very good points. 
>>>>>> 
>>>>>> Actually, it comes in as addAction(action: Selector), not String. You 
>>>>>> can initialize a Selector from a string literal.
>>>>> 
>>>>> Yes :) should have looked it up before I tried to remember it off the top 
>>>>> of my head.
>>>>> 
>>>>>> 
>>>>>> Three questions about your proposal:
>>>>>> 
>>>>>> 1. Where does "AnyObject -> Void" come from? The only signature 
>>>>>> information in a selector is the (minimum) number of arguments. Those 
>>>>>> arguments can be of any type, and
>>>>> 
>>>>> Well I would want to know what selectors people would us:
>>>>> 
>>>>> One with one argument tend to be for events like button actions and 
>>>>> notifications which could be replaced by closures. We could deprecate or 
>>>>> provide warnings when trying to use the Selector Apis in swift.
>>>>> 
>>>>> Others with more tend to be for canPerformSelector which is replaced by 
>>>>> optionals.
>>>>> 
>>>>> The one edge case not handled is nsinvocation or performSelector, I would 
>>>>> be interested why people use this use case and how we would replace it in 
>>>>> swift (if at all).
>>>>> 
>>>>>> 
>>>>>> 2. How are we supposed to implement this? You need to somehow convert a 
>>>>>> closure (a pointer to a bunch of captured variables with a pointer to a 
>>>>>> function embedded inside it) into a selector (a pointer to a table of 
>>>>>> selectors inside the Objective-C runtime, which does not do any normal 
>>>>>> memory management); I just don't see how you make that work. Saying 
>>>>>> "let's do this thing" doesn't mean it's *possible* to do the thing.
>>>>> 
>>>>> I get that they are different but I had the idea that the compiler could 
>>>>> generate a unique name for each closure which when referenced by a 
>>>>> selector it would invoke.
>>>>> 
>>>>> But this would be irrelevant if we moved towards closure Apis.
>>>>> 
>>>>>> 3. What about other uses for selectors? addAction() is all well and 
>>>>>> good, but you also need removeAction(), and Swift closures don't have 
>>>>>> stable identities to test with.
>>>>> 
>>>>> I question when we use things such as removeAction? I've only used 
>>>>> addAction. But I guess again if we moved to closure Apis this point would 
>>>>> be moot.
>>>>> 
>>>>> To me the only case that needs selectors is performSelector or 
>>>>> Nsinvocation. The others can be replaced by closures and the selector api 
>>>>> to be deprecated or to show a warning in swift :) (Xcode could even help 
>>>>> migrate by moving it to a closure that calls the function the selector 
>>>>> was pointing to)
>>>>> 
>>>>> I'm not a compiler expert so I rely on the swift team to tell me what's 
>>>>> possible (although at this early stage I think it's more important to 
>>>>> figure out what we want and not be bound by what's possible right now)
>>>> 
>>>> How would the closure based API work with Interface Builder ?
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to