In Swift, private methods are not visible outside of the class in which they are defined. However, it is possible to call a private method on an instance of a class using reflection. Here is an example:
main.swift304 chars14 lines
In this example, we define a class MyClass
with a private method myPrivateMethod()
. We then create an instance of the class called myInstance
.
Next, we create a Selector
object that corresponds to the name of the private method. We can then check if the instance responds to this selector using the responds(to:)
method.
If the instance does respond to the selector, we can then call the private method using the perform(_:)
method. Note that the return value of perform(_:)
is of type Unmanaged<AnyObject>?
, which we can safely ignore using the underscore (_) character.
It's important to note that accessing private methods through reflection may not be the best practice, as it can make your code less clear and harder to maintain. If possible, it's better to refactor your code to make private methods accessible only within the class.
gistlibby LogSnag