[swift-corelibs-dev] NSObject's performSelector(inBackground:with:) doesn't feel right in Swift 3

Philippe Hausler phausler at apple.com
Tue Aug 16 10:52:46 CDT 2016

I would claim that perhaps it should be:

open func perform(inBackground aSelector: Selector, with anArgument: Any?)

That way it matches the completion family of the rest of performing. But if that is the case we should take a look at the onMainThread ones as well so they look like this perhaps:

open func perform(onMainThread aSelector: Selector, with arg: Any?, waitUntilDone wait: Bool, modes array: [String]?)

That way the call sites would look like this:

myObject.perform(inBackground: #selector(doBackgroundStuff), with: nil)
myObject.perform(onMainThread: #selector(doMainThreadStuff), with: nil)
myObject.perform(#selector(doDelayedThings), with: nil, afterDelay: 0.7)
let result = myObject.perform(#selector(doThingsNow), with: nil).takeUnretainedValue()

> On Aug 16, 2016, at 8:46 AM, Shawn Erickson via swift-corelibs-dev <swift-corelibs-dev at swift.org> wrote:
> It is following the naming methodology of a sentence like structure "performed selector in background <selector> with <object>". It does read a little strange but likely comes from a simple remapping of the existing objective-c name for familiarly reasons.
> It could be performInBackground(selector:,with:) ... "Perform in background <selector> with <object>" but that also reads a little strange.
> -Shawn
> On Tue, Aug 16, 2016 at 8:40 AM Paul Hudson via swift-corelibs-dev <swift-corelibs-dev at swift.org <mailto:swift-corelibs-dev at swift.org>> wrote:
> Hello!
> I just noticed that performSelectorInBackground(_:withObject:) has
> been mapped to performSelector(inBackground:with:) in Swift 3. So:
> performSelector(inBackground: #selector(doStuff), with: nil)
> This seems confusing to me – the "inBackground" label has little to do
> with the selector that is attached to it. It's possible this has been
> through careful API review and if so I apologize. On the other hand,
> if it's an oversight is there time for it to be looked at again?
> Thank you!
> Paul
> --
> Free Swift tutorials – hackingwithswift.com <http://hackingwithswift.com/>
> _______________________________________________
> swift-corelibs-dev mailing list
> swift-corelibs-dev at swift.org <mailto:swift-corelibs-dev at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev <https://lists.swift.org/mailman/listinfo/swift-corelibs-dev>
> _______________________________________________
> swift-corelibs-dev mailing list
> swift-corelibs-dev at swift.org
> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-corelibs-dev/attachments/20160816/f828d9b8/attachment.html>

More information about the swift-corelibs-dev mailing list