What exactly is super in Objective-C?

Objective CSuperObjective C-Runtime

Objective C Problem Overview


As far as I know, it's a pointer to the superclass. It's hard-wired with the superclass, and not dynamically figured out at runtime. Would like to know it more in detail...

Anyone?

Objective C Solutions


Solution 1 - Objective C

super

Essentially, it allows you to use the implementations of the current class' superclass.

For the gritty details of the Objective-C runtime:

[super message] has the following meaning:

> When it encounters a method call, the > compiler generates a call to one of > the functions objc_msgSend, > objc_msgSend_stret, objc_msgSendSuper, > or objc_msgSendSuper_stret. Messages > sent to an object’s superclass (using > the super keyword) are sent using > objc_msgSendSuper; other messages are > sent using objc_msgSend. Methods that > have data structures as return values > are sent using objc_msgSendSuper_stret > and objc_msgSend_stret.

So yes, it is static, and not determined at runtime.

Solution 2 - Objective C

It's a keyword that's equivalent to self, but starts its message dispatch searching with the superclass's method table.

Solution 3 - Objective C

super is not a pointer to a class. Super is self, but when used in a message expression, it means "look for an implementation starting with the superclass's method table."

Solution 4 - Objective C

These blog postings on what is a meta class?, getting subclasses and classes and metaclasses may give you some insight on the internals of this.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondontWatchMyProfileView Question on Stackoverflow
Solution 1 - Objective CBen SView Answer on Stackoverflow
Solution 2 - Objective CChuckView Answer on Stackoverflow
Solution 3 - Objective CNSResponderView Answer on Stackoverflow
Solution 4 - Objective CDavid GelharView Answer on Stackoverflow