Hi Alex, Thanks for the update!
Cheers! -- Mohit Athwani http://about.me/mohitathwani On Aug 10, 2017, 2:56 AM -0700, Alex Blewitt <alb...@apple.com>, wrote: > > On 10 Aug 2017, at 07:04, Mohit Athwani via swift-users > > <swift-users@swift.org> wrote: > > > > With closures being first class citizens in Swift and the ability of > > closures to be able to capture scope, it seems a little archaic to me that > > the #selector() feature exists in Swift. > > > > For example, why does > > func addTarget(_ target: Any?, action: Selector, for controlEvents: > > UIControlEvents) > > > > have a Selector type for action. Why can’t action be defined to be a > > closure for example: > > addTarget(_ target: Any?, action: (sender: UIControl?, forEvent > > event:UIEvent?) -> Void, for controlEvents: UIControlEvents) > > > > What do you guys think? > > Selectors have been around since the start of the Objective-C platform, > before either macOS or iOS existed. Blocks weren't added into macOS until > relatively recently (from iOS 4 > https://en.wikipedia.org/wiki/Blocks_(C_language_extension) if you're > interested). > > So many of the APIs that predated the introduction of blocks worked by having > a selector that could be called back on a target, and these APIs are still > present today in current releases of macOS and iOS. > > The Swift based API is purely there because there are some APIs that aren't > capable of taking a block, and hence aren't capable of taking a Swift closure. > > Alex >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users