#import<Foundation/Foundation.h>
/*
1、对象方法
(1)减号- 开头
(2)只能由对象来调用
(3)对象方法中能访问当前对象的成员变量(实例变量)
2、类方法
(1)加号+ 开头
(2)只能由类(名)来调用
(3)类方法中不能访问成员变量(实例变量)
3、类方法的好处和使用场合
(1)不依赖于对象,执行效率高
(2)能用类方法,尽量用类方法
(3)场合:当方法内部不需要使用到成员变量时,就可以改为类方法
可以允许类方法和对象方法同名
*/
@interfacePerson : NSObject
{
int age;
}
// 类方法都是以+开头
+(void)printClassName;
-(void)test;
+(void)test;
@implementationPerson
+(void)printClassName
{
// error:instancevariable 'age' accessed in class method
// 实例变量age不能在类方法中访问
//NSLog(@"这个类叫做Person-%d",age);
}
-(void)test
{
NSLog(@"111-%d", age);
//[Person test];
}
+(void)test
{
// 会引发死循环
//[Person test];
NSLog(@"333");
// 会引发死循环
// [Person test];
}
@end
intmain()
{
//[PersonprintClassName];//直接用类名调用类方法
[Person test];
//Person *p =[Person new];
//[p test];
/*
-[Person printClassName]: unrecognizedselector sent to instance 0x7fa520c0b370
*/
// 系统会认为现在调用的printClassName是个对象方法
//[p printClassName];
return 0;
}
【备注】不能使用指针去访问类方法,会报错。类方法和成员(对象)方法可以同名。