1:self是類的隱藏的參數,指向當前調用方法的類,另一個隱藏參數是_cmd,代表當前類方法的selector。

2:super并不是隱藏的參數,它只是一個"編譯器指示符",它和self指向的是相同的消息接受者

3:當使用self調用方法時,會從當前類的方法列表中開始尋找,如果沒有,就從父類中再找,而使用super時,則從父類的方法列表中開始找,然后調用父類的這個方法


具體看代碼實現方法(詳細看代碼中的注釋)

一:看PersonSelf.h聲明文件

// //  PersonSelf.h //  PersonSelf // //  Created by hmjiangqq on 14-1-22. //  Copyright (c) 2014年 hmjiangqq. All rights reserved. //  #import <Foundation/Foundation.h> @class Student;  //@class一般用在頭文件中 @interface PersonSelf : NSObject {          //聲明兩個實例變量     int age;     NSString * name;     Student *s; }  //定義方法 -(NSString *) getName; -(void) setName:(NSString *)_name; -(int) getAge; -(void)setAge:(int)_age; @end
二:PersonSelf.m實現文件

// //  PersonSelf.m //  PersonSelf // //  Created by hmjiangqq on 14-1-22. //  Copyright (c) 2014年 hmjiangqq. All rights reserved. //  #import "PersonSelf.h" #import "Student.h" //#import一般使用在實現文件中 @implementation PersonSelf -(id)init{     if(self=[super init]){  //super可以調用父類中的方法         s=[[Student alloc]init];         NSLog(@"student:%@\n",s);     }     return  self; } -(NSString *) getName{     return  name; } -(void) setName:(NSString *)_name{     name=_name;     [self setAge:14];//self可以去調用本類對象中的方法     NSLog(@"setAge");     NSLog(@"self class is: %@\n",[self class]);     NSLog(@"super class is: %@\n",[super superclass]);      } -(int) getAge{     return  age; } -(void)setAge:(int)_age{     age=_age; } @end