Home > DeveloperSection > Blogs > Objective-C : Posing

Objective-C : Posing


iPhone iPhone  Ios  Objective C 
Ratings:
0 Comment(s)
 770  View(s)
Rate this:

Objective-C : Posing


Previously we learn how to add methods from outside the class : Objective-C : Categories

 

Objective-C permits a class to wholly replace another class within a program. The replacing class is said to "pose as" the target class.

Note: Class posing was declared deprecated with Mac OS X v10.5, and is unavailable in the 64-bit runtime.

For the versions still supporting posing, all messages sent to the target class are instead received by the posing class. There are several restrictions

 

•A class may only pose as one of its direct or indirect superclasses.

•The posing class must not define any new instance variables that are absent from the target class (though it may define or override methods).

•The target class may not have received any messages prior to the posing.

•Posing, similarly with categories, allows global augmentation of existing classes. Posing permits two features absent from categories:

•A posing class can call overridden methods through super, thus incorporating the implementation of the target class.

•A posing class can override methods defined in categories

 

For example,

@interface CustomNSApplication : NSApplication

@end

 

@implementation CustomNSApplication

- (void) setMainMenu: (NSMenu*) menu

{

     // do something with menu

}

@end

 

class_poseAs ([CustomNSApplication class], [NSApplication class]);

This intercepts every invocation of setMainMenu to NSApplication. 


Don't want to miss updates? Please click the below button!

Follow MindStick