Objective-C中的方法有两种:类方法和对象方法(也叫作实例方法)。
1、对象方法(实例方法)
1.1、对象方法解释
对象方法以 - 开头,属于类的某一个或某几个实例对象。对象方法是类对象必须进行实例化后才可以使用的方法,对象方法将消息发送给实例对象
。
1.2、对象方法声明
-
格式
对象方法.png - 特征:
- 对象方法以-开头如 -(void)xx;
- 对象方法只能由对象来调用
- 对象方法中可以访问当前对象的成员变量
- 调用格式 [对象名 对象方法名];
1.3、对象方法实现:
- 必须写在以@implementation开头,@end之间
- 在声明的后面加上{}即表示实现
- 将需要实现的代码写在{}中
2、类方法
2.1、类方法解释
以+开头的方法是类方法。它是属于类本身的方法,不属于类的某一个实例对象,不需要实例化类,用类名即可使用,通过类方法将消息发送给类
。
2.2、类方法声明
- 格式
将对象方法-号变为+号
- 特征
- 类方法以+开头 如+(void)put;
- 类方法只能由类来调用
- 类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间来存储类中的成员变量。
- 类方法的好处:
- 不依赖于对象,执行效率更高;
- 能用类方法解决的问题,尽量使用类方法;
- 类方法的场合:
- 当方法内部不需要使用到成员变量时,可以改为类方法
- 类方法一般用于编写工具方法
2.3、类方法实现
- 必须写在以@implementation开头,@end之间
- 在声明的后面加上{}即表示实现
- 将需要实现的代码写在{}中
3.对象方法和类方法区别
3.1、对象方法
- 对象方法是属于对象的
- 以减号-开头
- 只能让对象调用,没有对象,这个方法根本不可能被执行
- 对象方法能访问实例变量(成员变量)
- 对象方法中可以调用当前对象的对象方法
- 对象方法中可以调用其他对象的对象方法
- 对象方法中不可以调用类方法
3.2、类方法
- 类方法是属于类的
- 以加号+开头
- 只能用类名调用,对象不能调用
- 类方法中不能直接访问实例变量(成员变量)
- 类方法中不能直接调用对象方法,要想调用对象方法,必须创建或传入对象。
3.3、使用场合:
- 当不需要访问成员变量的时候,尽量用类方法
- 类方法和对象方法可以同名
4、声明和实现
在OC中类的定义有两部分:类的声明、类的实现。
- .h:
类的声明文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。
注意:.h中的方法只是做一个声明,并不对方法进行实现。
也就是说,只是说明一下方法名、方法的返回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。
- .m:
类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end。
方法的声明和实现,都必须以 + 或者 -开头:
- + 表示类方法(静态方法)
- - 表示对象方法(动态方法)
在.h中声明的所有方法作用域都是public类型,不能更改。
成员变量的常用作用域有3种:
- @public 全局都可以访问
- @protected 只能在类内部和子类中访问
- @private 只能在类内部访问