------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. 类方法概述
OC中可以声明两种类型的方法:实例方法和类方法。在调用一个实例方法时必须先创建一个实例对象,而类方法使用时不需要创建实例对象。
+表示类方法,类调用类方法,不依赖于任何对象的方法,类方法的好处是可以节省内存空间。
类方法的调用:[类名称 类方法名称];
类方法使用的示例代码如下:
#import <Foundation/Foundation.h>
@interface Person:NSObject
//定义一个类方法
+(void)run;
@end
@implementation Person
//实现类方法
+(void)run{
NSLog(@"人正在奔跑");
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//通过类名调用类方法
[Person run];
}
return 0;
}
2. 类方法使用注意事项:
- 可以和实例方法同名,但互不影响使用
- 类方法可以从父类继承,子类可以重写类方法
- 类方法只能通过类名调用
- 在类方法中使用self,self指代的是类对象而非实例对象
- 节省内存空间
- 提高效率
- 作为工具方法(例如统计字符串长度)
在类方法中使用成员变量,因为在类方法中没有创建对象,所以没有在堆区分配空间,成员变量也就没有内存空间,访问也就没有意义。
5. 类方法和对象方法比较
在对象方法中调用其他对象方法的方式:
- 在当前对象方法中创建对象,使用新创建的对象调用对象方法
- 使用self调用对象方法
- 对象作为方法的参数传递过来,使用传递过来的对象调用对象方法
在类方法中调用其他类方法
- 可以直接使用类名调用其他类方法
- 使用self调用其他类方法
6. 匿名类
匿名类的创建:[类名 new]
匿名类的使用
使用匿名类访问实例变量,只能访问一次,再次访问,访问的是新空间
[Car new]—>_speed=250;
NSLog(@"_speed=%d",[Car new]—>_speed); //打印出来的值是0
使用匿名类可以调用方法 eg:[[Car new] stop];
匿名类作为方法的参数:
eg:[[Person new] goHome:[Car new]]; //匿名类调用方法,方法参数又是一个匿名类