> What if selectors arguments could be imported into swift to take a closure 
> instead ? 
> 
> This would fit into the proposal to rewrite the imported objective c Apis 
> 
> So 
> 
> - addAction:(Selector)action
> 
> Becomes
> 
> addAction(action:(AnyObject)->Void)
> 
> Instead of
> 
> addAction(action:String) 
> 
> Like it does now.

Actually, it comes in as addAction(action: Selector), not String. You can 
initialize a Selector from a string literal.

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 

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.

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.

-- 
Brent Royal-Gordon
Architechies

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

Reply via email to