Then, when ViewController's [super viewDidAppear:] is called, it will trigger a doesNotRecognizeSelector crash.
It is because that when the hook token is removed from ViewController, Aspect finds ViewController has no hooks, so aspect_undoSwizzleForwardInvocation is called, resetting ViewController's forwardInvocation to the original method (which is nil, and Aspect uses NSObject's forwardInvocation implementation instead ).
sample project: Aspect_issue.zip
add a hook for superclass, e.g.
UIViewController
add a hook for subclass, e.g.
ViewController
Then, when
ViewController
's[super viewDidAppear:]
is called, it will trigger adoesNotRecognizeSelector
crash.It is because that when the hook
token
is removed fromViewController
, Aspect findsViewController
has no hooks, soaspect_undoSwizzleForwardInvocation
is called, resettingViewController
'sforwardInvocation
to the original method (which is nil, and Aspect uses NSObject'sforwardInvocation
implementation instead ).