【学习笔记】【OC语言】类方法

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

1.基本概念

直接可以用类名来执行的方法(类本身会在内存中占据存储空间,里面有类\对象方法列表)

2.类方法和对象方法对比

1>对象方法

以减号-开头

只能让对象调用,没有对象,这个方法根本不可能被执行

对象方法能访问实例变量(成员变量)

2>类方法

以加号+开头

只能用类名调用,对象不能调用

类方法中不能访问实例变量(成员变量)

使用场合:当不需要访问成员变量的时候,尽量用类方法

类方法和对象方法可以同名

3.代码

1#import<Foundation/Foundation.h>2/*3对象方法41> 减号 - 开头52> 只能由对象来调用63> 对象方法中能访问当前对象的成员变量(实例变量)78类方法91> 加号 + 开头102> 只能由类(名)来调用113> 类方法中不能访问成员变量(实例变量)121314类方法的好处和使用场合151> 不依赖于对象,执行效率高162> 能用类方法,尽量用类方法173> 场合:当方法内部不需要使用到成员变量时,就可以改为类方法1819可以允许类方法和对象方法同名20*/212223@interfacePerson : NSObject24{25intage;26}2728//类方法都是以+开头29+ (void)PRintClassName;3031- (void)test;32+ (void)test;3334@end3536@implementationPerson3738+ (void)printClassName39{40//error:instance variable 'age'accessed in class method41//实例变量age不能在类方法中访问42//NSLog(@"这个类叫做Person-%d", age);43}4445- (void)test46{47NSLog(@"111-%d", age);4849//[Person test];50}5152+ (void)test53{54//会引发死循环55//[Person test];5657NSLog(@"333");5859//会引发死循环60///[Person test];61}6263@end6465intmain()66{67//[Person printClassName];6869[Person test];7071//Person *p = [Person new];72//[p test];7374/*75-[Person printClassName]: unrecognized selector sent to instance 0x7fa520c0b37076*/77//系统会认为现在调用的printClassName是个对象方法78//[p printClassName];7980return0;81}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航