【Objective-C】06-OC对象中的self
2014-12-11 21:45
211 查看
OC对象中的self,有点像C#中的this。但是又有差异,self可以用来指向当前对象的对象方法,也可以指向当前对象的类方法。而this不能指向C#中的静态方法(类方法)。
self用途:
1、当方法中声明了一个跟类成员变量重名的变量,直接访问成员变量名时,默认优先访问方法内部声明的变量。当想要访问类的成员变量时,就要用self->成员变量名的方式来访问了。
2、谁调用了当前方法,self就代表谁
2.1 self出现在对象方法中,self就代表对象
2.2 self出现在类方法中,self就代表类
3、[self 方法名]可以调用类本身的其他对象方法/类方法
self用途:
1、当方法中声明了一个跟类成员变量重名的变量,直接访问成员变量名时,默认优先访问方法内部声明的变量。当想要访问类的成员变量时,就要用self->成员变量名的方式来访问了。
2、谁调用了当前方法,self就代表谁
2.1 self出现在对象方法中,self就代表对象
2.2 self出现在类方法中,self就代表类
3、[self 方法名]可以调用类本身的其他对象方法/类方法
#import <Foundation/Foundation.h> @interface Dog:NSObject { //年龄 int _age; } //设置年龄 - (void)setAge:(int)age; //获得年龄 - (int)age; //叫方法 - (void)bark; + (void)bark; //跑方法 - (void)run; + (void)run; @end @implementation Dog - (void)setAge:(int)age { _age=age; } - (int)age { return _age; } //对象方法:叫 - (void)bark { //声明方法内部的成员变量,跟类的成员变量同名 int _age=3; //直接访问_age,优先访问方法内部的成员变量 //NSLog(@"汪汪汪,我今年%d岁了",_age); //通过self->成员变量名访问类本身的成员变量 NSLog(@"汪汪汪,我今年%d岁了",self->_age); } //类方法:叫 + (void)bark { NSLog(@"我是类方法,汪汪汪"); } //对象方法:跑 - (void)run { //通过[self 方法名]调用类本身的其他方法。由于是在对象方法中调用,所以访问的是对象方法bark [self bark]; NSLog(@"跑跑跑"); } //类方法:跑 + (void)run { NSLog(@"我是类方法,跑跑跑"); } @end int main() { Dog *d=[Dog new]; [d setAge:10]; //调用对象方法:叫 [d bark]; //调用对象方法:跑 [d run]; }
相关文章推荐
- 【Objective-C】OC中对象创建,self,super的详解
- 【Objective-C】OC中对象创建,self,super的详解
- 黑马视频学习笔记-OC-self,类方法,对象方法
- Objective-C初始化对象的时候为什么总是有一句:if (self = [super init])
- 【Objective-C】OC中对象归档(序列化)的基本概念和用法
- self 在OC中的作用(主要是对象方法和类方法中的作用)
- OC语言学习06-字典对象
- 【Objective-C】OC中对象归档(序列化)的基本概念和用法
- Objective-c:OC语言简介、类与对象
- 黑马-OC语法-self(关键字),“.”语法,声明对象等默认类型
- 【IOS 开发学习总结-OC-18】★★objective-c面向对象之——OC的包装类与对象处理
- 【Objective-C】08-OC对象的super关键字
- Objective-c第一课,OC的面向对象
- OC基础-06 对象在内存中的存储细节
- 【Objective-C】OC中NSNumber数字对象的常用处理方法
- Objective-C:OC内部可变对象和不可变对象的深(复制)拷贝问题思考:
- Objective-C Copy语法(二)对于我们自定义对象Copy以及[self class]相关的错误
- OC笔记10(成员变量默认值,alloc和init)笔记11(对象的初始化与self)12(id类型与super关键字)
- 【Objective-C】OC中NSNumber数字对象的常用处理方法
- 【IOS 开发学习总结-OC-8.1】★★ objective-c面向对象之——类和对象(上)