self指针:
- (void) test { NSLog(@"hahha"); [self test]; // 首先这个self肯定是实例对象,这样调用会引发死循环; }
super指针:
#import <Foundation/Foundation.h> // 父类Person类 @interface Person : NSObject // 为了方便说明问题,定义两个同名方法,一个是类方法,一个是对象方法,walk方法是要被子类覆盖的; - (void)test; + (void)test; - (void)walk; @end @implementation Person - (void)test { NSLog(@"对象方法-test"); } + (void)test { NSLog(@"类方法-test"); } - (void)walk { NSLog(@"walk"); } @end // 子类 Boy @interface Boy : Person - (void)haha; + (void)haha1; - (void)walk; @end @implementation Boy - (void)haha { [super test]; // 在对象方法中调用super,调用的时父类的对象方法test } + (void)haha1 { [super test]; // 在类方法中调用super,调用的时父类的类方法test } - (void)walk { [super walk]; // 掉用父类的walk方法 NSLog(@"run"); } @end int main() { Boy *b = [Boy new]; [b haha]; // 在对象方法中调用super,调用的时父类的对象方法test,输出 -test [Boy test]; // 在对象方法中调用super,调用的时父类的对象方法test,输出 +test return 0; }
isa指针是每个对象内部自动生成,指向类对象的指针;
黑马程序员-OC self super isa指针,布布扣,bubuko.com
原文:http://www.cnblogs.com/cxbblog/p/3719934.html