What exactly is super in Objective-C?
Objective CSuperObjective C-RuntimeObjective 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
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.