一 、类方法:
------ IOS培训、android培训、期待与您交流!-------
#import<Foundation/Foundation.h>
@interface Person:NSObject
{
int age;
}
//类方法都是以+开头的
+ (void)printfClassName;
+ (void)test;
- (void)test;
@end
@implementation Person
+ (void)printfClassName //类方法
{
//实例变量age不能在类方法中访问
NSLog(@"这个类叫做Person-%d",age);
}
+ (void)test
{
NSLog(@"3333");
}
- (void)test
{
NSLog(@"调用了test方法");
}
@end
int main()
{ //调用类方法用类名调用
[Person printfClassName];
[Person test];
Person *p = [Person new];
return 0;
}
注::1.如果用对象调用类方法,那么会发出一个不能识别的警告;
2.允许类方法和对象方法重名;
小结:1.对象方法:1>、减号-开头;2>、只能由对象来调用;3>、对象方法中能访问当前对象的成员变量;4>、对象方法中可以调用类方法;
2.类方法:1>、加号+开头;2>、只能由类(名)来调用;3>、不能访问成员变量;
3.可以允许类方法和对象方法重名;
4、实例变量不能在类方法中访问;
类方法的好处和使用场合:1>、不依赖于对象,执行效率高
2>、能用类方法尽量用类方法
3>、场合:当方法内部不需要使用到成员变量时,就可以改为类方法
二、self关键字
#import<Foundation/Foundation.h>
@interface Peson : NSObject
{
int _age;
}
- (void)setAge:(int)age;
- (int)age;
- (void)test;
@end@implementation Person
- (void)setAge:(int)age
{
-age=age;
self->_age=age
}
- (int)age
{
return _age;
}
- (void)test
{
int _age=20;
NSLog(@"Person的年龄是%d岁",self->age);//self是一个指针,指向方法调用者
}
@end
int main()
{
Person *p = [Person new];
[p setAge:10];
[p test];
return 0;
}
注:1>、self是一个指针,指向调用当前方法的那个对象;
2>、可以代表当前对象;
2>、在对象方法中,可以利用"self->成员变量名"访问当前对象内部的成员变量;
3>、 在对象方法中self代表当前对象,可以调用对象方法 [self 方法名];
4>、在类方法中,self代表类,可以调用其他类方法;
5>、也就是谁调用了self,self就代表谁;
self使用注意:1>、self在使用时注意会引发死循环
2>、self出现在对象方法中,self就代表对象
3>、self出现在类方法中,self就代表类
------ IOS培训、android培训、期待与您交流!-------