self是指针,指向方法调用者,指向当前对象
self应用于对象方法或者类方法中,
练习:
//self
/*
self的用途:
1>谁调用了当前的方法,self就代表谁
*self出现在对象方法中,self就代表对象
*self出现在类方法中,self就代表类
2>在对象方法利用"self->_age"访问当前对象内部的成员变量
3>[self 方法名]可以调用其他对象方法\类方法
self使用注意:
不能[self 当前方法名]
*/
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
int _age;
}
- (void)setAge:(int)age;
- (int)age;
- (void)test;
+ (void)test;
@end
@implementation Person
- (void)setAge:(int)age
{
//_age = age;
self->_age = age;
}
- (int)age
{
//return _age;
return self->_age;
//死循环
//[self age];
}
- (void)test
{
//self:指向了方法调用者,代表着当前对象
NSLog(@"年龄:%d", self->_age);
}
- (void)test2
{
[self test];
}
+ (void)test
{
NSLog(@"访问类方法");
}
+ (void)test2
{
[self test];
}
@end
/************计算器类(self应用)************************/
@interface JiSuanQi : NSObject
+ (int)sumOfNum1:(int)num1 andNum2:(int)num2;
+ (int)averageOfNum1:(int)num1 andNum2:(int)num2;
@end
@implementation JiSuanQi
+ (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;
}
@end
int main()
{
Person *p = [Person new];
[p setAge:10];
int a = [p age];
[p test];
[Person test];
[Person test2];
[JiSuanQi sumOfNum1:10 andNum2:20];
[JiSuanQi averageOfNum1:10 andNum2:20];
return 0;
}