Objective-C: What does [ClassName self]; do? Objective-C: What does [ClassName self]; do? objective-c objective-c

Objective-C: What does [ClassName self]; do?


In this context, - (id)self is a method defined on NSObject. It returns the receiver. For a Class it should obviously do the same as a call to the -(Class)class.

Class objects are thus full-fledged objects that can be dynamically typed, receive messages, and inherit methods from other classes. They’re special only in that they’re created by the compiler.


[Classname self] is equal to [Classname class] and returns a reference to the class object.

A little sample code illustrates this:

#import <Foundation/Foundation.h>int main(int argc, char *argv[]) {NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];NSLog(@"Output 1: %@ address:%x",[NSString self], [NSString self]);NSLog(@"Output 2: %@ address:%x",[NSString class], [NSString class]);[p release];

}

Output:

2012-02-22 15:36:13.427 Untitled[1218:707] Output 1: NSString address:7b306a082012-02-22 15:36:13.428 Untitled[1218:707] Output 2: NSString address:7b306a08


[className self]; is same as [className class];
Returns the class object.
For example:

id object = [getSystemEventsAppDelegate self];id object1 = [getSystemEventsAppDelegate class];  

enter image description here