黑马程序员——OC学习——类方法和匿名类

------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指代的是类对象而非实例对象
3. 类方法优点:

  • 节省内存空间
  • 提高效率
  • 作为工具方法(例如统计字符串长度)
4. 类方法易犯的错误:

在类方法中使用成员变量,因为在类方法中没有创建对象,所以没有在堆区分配空间,成员变量也就没有内存空间,访问也就没有意义。


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]]; //匿名类调用方法,方法参数又是一个匿名类




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值