关于self关键字

self关键字

OC提供了一个self关键字,self关键字总是指向调用该方法的对象
一:
self最大的一个作用是让类中的一个方法访问该类的另一个方法或成员变量。用法如下:

	#import "FKDog.h"
	@impiementation FKDog
	//实现一个jump方法
	- (void) jump {
			NSLog (@"正在执行jump方法");
	}
	- (void) run {
			[self jump];  //self总是代表当前类的对象。谁在调用这个方法,self就代表谁。
			NSLog (@"正在执行run方法");
	}

注意: self不能出现在类方法中。因为类方法的调用者是类本身,而不是对象,如果在类方法中使用了self关键字,这个self关键字就不能确定代表谁了。

二:
当局部变量和成员变量重名的情况下,局部变量会隐藏成员变量。为了在方法中强行引用成员变量,可以使用self关键字进行区分。使用如下:

	#import <Foundation/Foundation.h>
	@interface FKWolf: NSObject {
		NSString* _name;
		int _age;
	}
	//定义一个setName:ageAge方法
	- (void) setName: (NSString*) _name andAge: (int) _age;
	- //定义一个info方法
	- (void)  info;
	@end
	#import "FKWolf.h"
	@implementation FKWolf
	//定义一个setName:andAge方法
	//此处故意让形参与成员变量重名,然后通过self强行指定访问成员变量
	- (void) setName: (NSString*) _name andAge: (int) _age {
		//当局部变量隐藏成员变量时,
		//可用self代表调用该方法的对象,这样即可为调用该方法的成员变量赋值
		self->_name = _name;
		self->_age = _age;
	}	
		//定义一个info方法
		- (void) info {
		NSLog (@"名字:%@,  年龄: %d", _name, _age);
	}

三:
当self作为对象的默认引用使用时,程序可以像访问普通指针变量一样访问这个self引用,甚至可以把self当成普通方法的返回值。用法如下:

- (ReturnSelf*) grow {
		_age++;
		//返回调用该方法的对象
		return self;
	}

如果在某个方法中把self作为返回值,则可以多次连续调用同一个方法,从而使代码更加简洁。但是,这种把self作为返回值的方法可能造成实际意义的模糊。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值