#import<Foundation/Foundation.h>spa
/*.net
1、對象方法指針
(1)減號- 開頭對象
(2)只能由對象來調用get
(3)對象方法中能訪問當前對象的成員變量(實例變量)io
2、類方法class
(1)加號+ 開頭test
(2)只能由類(名)來調用效率
(3)類方法中不能訪問成員變量(實例變量)import
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;
}
【備註】不能使用指針去訪問類方法,會報錯。類方法和成員(對象)方法能夠同名。