When a program calls a selector on super, which is not implemented by the current super class or its ancestors, the method call is simply ignored, as if the method was called on nil. For instance, for the test program shown below, I would expect two exceptions to be reported as for the Apple's Foundation and runtime:
2020-04-13 16:13:34.742 Test[48512:1642397] -[D initWithObject:ptr:]: unrecognized selector sent to instance 0x7fecbb704a00
2020-04-13 16:13:34.743 Test[48512:1642397] Caught exception -[D initWithObject:ptr:]: unrecognized selector sent to instance 0x7fecbb704a00
2020-04-13 16:13:34.743 Test[48512:1642397] Calling [e run] for <E: 0x7fecbb407890>
2020-04-13 16:13:34.743 Test[48512:1642397] -[E method:pointer:]: unrecognized selector sent to instance 0x7fecbb407890
2020-04-13 16:13:34.743 Test[48512:1642397] Caught exception -[E method:pointer:]: unrecognized selector sent to instance 0x7fecbb407890
However, for libobjc2 and GNUstep-base I'm seeing this:
2020-04-13 16:18:10.644 Test[17264:17264] Calling [d run] for (null)
2020-04-13 16:18:10.645 Test[17264:17264] Calling [e run] for <E: 0x1cc65c8>
When a program calls a selector on super, which is not implemented by the current super class or its ancestors, the method call is simply ignored, as if the method was called on nil. For instance, for the test program shown below, I would expect two exceptions to be reported as for the Apple's Foundation and runtime:
However, for libobjc2 and GNUstep-base I'm seeing this:
Test program: