[swift-users] Swift 3 likes to tease me

Gerriet M. Denkmann g at mdenkmann.de
Fri Sep 23 01:57:22 CDT 2016


> On 23 Sep 2016, at 12:09, Marco S Hyman <marc at snafu.org> wrote:
> 
> On Sep 22, 2016, at 9:51 PM, Gerriet M. Denkmann via swift-users <swift-users at swift.org> wrote:
>> 
>> This line (Swift 3):
>> 	if a.responds(to: Selector(“viewControllers") )
>> creates this warning: Use '#selector' instead of explicitly constructing a 'Selector'
>> 
>> Ok. Following this advice I change it to:
>> 	if a.responds(to: #selector(“viewControllers”))
> 
> #selector does not take a string.   It takes a method name.  This is required as the name needs to be mangled/demangled in the conversion between obj-c and swift.
> 
> You might need the class name, too, e.g. #selector(MyClass.viewControllers)

This might be difficult. viewControllers is a property used in several classes, e.g. UIPageViewController, UISplitViewController, etc.

Xcode has just given me a new suggestion (probably it noticed that I was not quite happy with its former hint):
	if a.responds(to: #selector(getter: UINavigationController.viewControllers))
but I do not want to be restricted to this special class.
My a is AnyObject and should be treated as such.

Kind regards,

Gerriet.




More information about the swift-users mailing list