You can create a selector for viewWillAppear, but not for viewDidLoad

I do not see why this compiles:

let viewWillAppearSelector = #selector(UIViewController.viewWillAppear(_:)) 

But not this:

 let viewDidLoadSelector = #selector(UIViewController.viewDidLoad()) 

Error

"Using an instance member of 'viewDidLoad' for type UIViewController; do you want to use the value type" UIViewController "instead?

Why are the latter not complicated, but the former does?

Update: I changed it to this, and now it compiles:

 let viewDidLoadSelector = #selector(UIViewController.viewDidLoad) 

But I'm not 100% why this

+5
source share
1 answer

If the method does not accept any parameters, you need to omit the parentheses. In a future version of Swift, your code will become a bug.

Try

 let viewDidLoadSelector = #selector(UIViewController.viewDidLoad) 

instead.

+6
source

All Articles