[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
#import "PersonSelf.h"
详情请参考:
http://www.cnblogs.com/tangbinblog/p/4034890.html
例如 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
相关文章推荐
- Object-C中内存引用计数
- Javascript Object.defineProperty()
- 飞机大战-GameObject精灵父类的实现
- Object-c 控制语句
- object-c 基本数据类型
- python遇到AttributeError: 'str' object has no attribute '_getAssertEqualityFunc'问题解决过程
- OC视频笔记3.1(Foundation框架,NSObject里面的方法)3.2(isKindOfClass和isMemberOfClass)
- object references an unsaved transient instance - save the transient instance before flushing
- error LNK2019: 无法解析的外部符号 __imp_GetUserObjectInformationW,该符号在函数 OPENSSL_isservice 中被引用
- Android开发: JSONObject的数据解析
- [Objective-C] 类、对象和方法
- Flex中的XMLListCollection,ArrayCollection和ObjectProxy
- Objective- c浅谈对象的初始化
- WaitForSingleObject和CEvent用法
- Object-C非正式协议与正式协议的区别
- 关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
- source insight支持object-c显示的设置
- NSString,NSMutableString
- Objective-C 和 Core Foundation 对象相互转换的内存管理总结
- cannot open shared object file: No such file or directory解决