> 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 [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
