OC之类方法
#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;
@end
?
@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;
}
【備注】不能使用指針去訪問類方法,會報錯。類方法和成員(對象)方法可以同名。
總結
- 上一篇: ASP.NET 5 Beta8 已经发布
- 下一篇: android decorView详解