objective-c中self的使用



一、关于objective-c中的self的使用方法

1、用法:
1>.self就是个指针,指向了方法调用者,就是说谁调用它,他就指向谁!
2>.我们可以通过利用   “self->成员变量名”   这种形式来访问当前对象内部的成员变量!
3>我们也可以使用  [self,   方法名];  这种方式来调用对象方法或者类方法!
2 、示例:
self的具体用法,我们来看一段代码,通过代码来进一步学习:
1>self->成员变量名” 
#import <Foundation/Foundation.h>

@interface Person : NSObject
{
int _age;                              //Person类中的唯一成员变量_age.
}

- (void)setAge:(int)age;
- (int)age;

- (void)test;

@end

@implementation Person
- (void)setAge:(int)age
{
// _age = age;
self->_age = age;                                  //        我们可以通过利用   “self->成员变量名”   这种形式来访问当前对象内部的成员变量!
}
- (int)age
{
return self->_age;                                    //        我们可以通过利用   “self->成员变量名”   这种形式来访问当前对象内部的成员变量!
}

- (void)test
{

int _age = 20;
NSLog(@"Person的年龄是%d岁", self->_age);            // 想在test函数中输出成员变量的值,而不是该函数中的_age,所以我们只好用self->age来实现
}

@end

int main()
{
Person *p = [Person new];

[p setAge:10];

[p test];

return 0;
}


2>[self,   方法名]  对象方法

#import <Foundation/Foundation.h>

@interface Dog : NSObject                                     //定义一个Dog类,声明两个方法,bark和run.
- (void)bark;
- (void)run;
@end

@implementation Dog
- (void)bark
{
NSLog(@"汪汪汪");                                                        //  bark方法的实现
}
- (void)run
{                                 
[self bark];                                                     //  run方法的实现
//NSLog(@"汪汪汪");                                                  //  如果想在输出“跑跑跑”之前,先输出“汪汪汪”,我们可以拷贝一份“汪汪汪”来输出,但是如果使用
NSLog(@"跑跑跑");                                                         self就更简便,直接[self  bark]  调用对象方法,更加快捷。
}
@end

int main()
{
Dog *d = [Dog new];

[d run];

return 0;
}


3>[self,   方法名]  类方法

/*
设计一个计算器类
* 求和
* 求平均值
*/

#import <Foundation/Foundation.h>
@interface JiSusnQi : NSObject               // 工具类:基本没有任何成员变量,里面的方法基本都是类方法
+ (int)sumOfNum1:(int)num1 andNum2:(int)num2;    //  +开头,声明类方法 

+ (int)averageOfNum1:(int)num1 andNum2:(int)num2;
@end

@implementation JiSusnQi
+ (int)sumOfNum1:(int)num1 andNum2:(int)num2                                          //   类方法的实现
{
return num1 + num2;
}

+ (int)averageOfNum1:(int)num1 andNum2:(int)num2
{
int sum = [self sumOfNum1:num1 andNum2:num2];                                   // 这个时候,我们求平均之前,一定要先取得总和的值,可以直接用类进行
return sum / 2;       调用方法[jisuanqi sumOfNum1:num1 andNum2:num2];   也可以直接用
}       [self sumOfNum1:num1 andNum2:num2]; 来调用类方法。
@end

int main()
{
int a = [JiSusnQi averageOfNum1:10 andNum2:12];

NSLog(@"a=%d", a);

// JiSusnQi *jsq = [JiSusnQi new];
// 
// 
// [jsq sumOfNum1:10 andNum2:13];

return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值