您的位置:首页 > 移动开发 > Objective-C

[Objective-C] id、self、super

2015-05-31 10:40 513 查看
id 数据类型可存储任何类型的对象。从某种意义说,它是一般对象类型。
例如 id
number;

将number声明为id类型的变量。
可声明方法使其具有id类型的返回值,如下:
-(id) newObject: (int) type;
事实# id类型是通用指针类型
因为通过指针(也就是内存地址)引用对象,所以可以自由地将它们在id变量之间来回赋值,因此,返回id类型值的方法就是返回指向内存中某对象的指针。然后可以将该值赋给任何对象变量。

self 是什么 ,super 是什么

> 在动态方法中,self代表着"对象"

> 在静态方法中,self代表着"类"

> 万变不离其宗,记住一句话就行了:self代表着当前方法的调用者

self 和 super 是oc 提供的 两个保留字。 但有根本区别,

当使用self调用方法时,会从当前类的方法列表中开始寻找,如果没有,就从父类中再找,而使用super时,则从父类的方法列表中开始找,然后调用父类的这个方法
给出栗子简单的用下self 和super 这两个保留字:
接口部分:
@interface PersonSelf : NSObject
{

//声明两个实例变量
int age;
NSString * name;
Student *s;
}

//定义方法
-(NSString *) getName;
-(void) setName:(NSString *)_name;
-(int) getAge;
-(void)setAge:(int)_age;
@end
实现部分

#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


详情请参考:
http://www.cnblogs.com/tangbinblog/p/4034890.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: