PS:个人感觉跟C#的静态方法和非静态方法有点类似,仅仅是有点类似。明杰老师说过不要总跟之前学过的语言做比较,但是个人觉得,比较一下可以加深印象吧。重点是自己真的能够区分开!
一、OC中的对象方法
1.以减号“-”开头
2.只能让对象调用,没有对象,这个方法根本不可能被执行
3.对象方法能访问实例变量(也就是成员变量)
二、OC中的类方法
1.以加号“+”开头
2.只能用类名调用,对象不能调用
3.类方法中不能访问实例变量(也就是成员变量)
4.适用场合:当不需要访问成员变量的时候,尽量用类方法
值得注意的是类方法和对象方法可以同名,但是慎用啊!
三、代码示例:
1 /* 2 设计一个计算器类 3 1.类名:Caculator 4 2.方法: 5 * 返回PI:3.14 6 * 计算某个数值的平方 7 * 计算两个数值的和 8 */ 9 10 #import <Foundation/Foundation.h> 11 12 // 计算器的声明 13 @interface Caculator : NSObject 14 // 方法的声明 15 + (double)pi; 16 + (double)pingfang:(double)number; 17 + (double)sumOfNum1:(double)num1 andNum2:(double)num2; 18 @end 19 20 // 计算器的实现 21 @implementation Caculator 22 23 // 实现@interface中声明的方法 24 + (double)pi 25 { 26 return 3.14; 27 } 28 29 + (double)pingfang:(double)number 30 { 31 return number * number; 32 } 33 34 + (double)sumOfNum1:(double)num1 andNum2:(double)num2 35 { 36 return num1 + num2; 37 } 38 @end 39 40 41 int main() 42 { 43 [Caculator pi]; 44 45 [Caculator pingfang:10]; 46 47 [Caculator sumOfNum1:10 andNum2:5]; 48 return 0; 49 }