本帖最后由 supergcs 于 2014-11-15 00:41 编辑
- #import <Foundation/Foundation.h>
- @interface Calculator : NSObject{
- int _sum;//和
- }
- //求和
- //对象方法
- -(int)sumWithNumber1:(int)number1 andNumber2:(int)number2;
- //类方法的规则:1.以+号开头 2.其他的规则与对象方法相同
- +(int)sumWithNumber3:(int)number3 andNumber4:(int)number4;
- //求平均值
- -(int)averageWithNumber1:(int)number1 andNumber2:(int)number2;
- +(int)averageWithNumber3:(int)number3 andNumber4:(int)number4;
- +(void)test;
- //求差
- -(int)subWithNumber1:(int)number1 andNumber2:(int)number2;
- +(int)subWithNumber1:(int)number1 andNumber2:(int)number2;
- @end
- #import "Calculator.h"
- @implementation Calculator
- //对象方法求和
- //number1 = 2 number2 = 4
- -(int)sumWithNumber1:(int)number1 andNumber2:(int)number2{
-
- //成员变量可以在对象方法中使用
- _sum = number1 + number2;
-
- return _sum;
- }
- //类方法求和
- +(int)sumWithNumber3:(int)number3 andNumber4:(int)number4{
- //当一个方法当中要使用成员变量的时候,不能用类方法。原因:成员变量的存在依附于对象,在使用类方法的时候,并没有创建对象,所以类方法当中不能使用成员变量。
-
-
- // _sum = number3 + number4;
- return number3 + number4;
- }
- //对象方法调用自己的类方法
- -(int)averageWithNumber1:(int)number1 andNumber2:(int)number2{
-
- int sum2 = [Calculator sumWithNumber3:number1 andNumber4:number2];
-
- return sum2/2;
- }
- //通过self关键字实现 对象方法调用自己的对象方法
- //-(int)averageWithNumber1:(int)number1 andNumber2:(int)number2{
- // [self sumWithNumber1:number1 andNumber2:number1];
- // return (number1 + number2)/2;
- //}
- +(int)averageWithNumber3:(int)number3 andNumber4:(int)number4{
-
- int sum1 = [Calculator sumWithNumber3:number3 andNumber4:number4];
-
- return sum1/2;
- }
- +(void)test{
-
- NSLog(@"进来了");
-
- [Calculator test];
- }
- -(int)subWithNumber1:(int)number1 andNumber2:(int)number2{
-
- return number1 - number2;
- }
- +(int)subWithNumber1:(int)number1 andNumber2:(int)number2{
-
- return number1 - number2;
- }
- @end
复制代码总结: 一、 对象方法 -(void)lookMyPhone; 1、以-号开头 2、里面可以使用成员变量 3、用对象来调用 4、对象方法可以调用类方法和对象方法
二、 类方法 - +(NSString *)colorWithEnumColor:(Color)color;
复制代码1、以+号开头 2、不可以使用成员变量 3、类名来调用 4、可以作为工具方法 *类方法在调用类方法的时候,不能自己调自己,会造成死循环
*区分同名的对象方法和类方法:根据方法前面的标识符
使用场景: 尽量使用类方法(类方法可以节省内存空间,提高效率) 当有成员变量时,不用使用类方法
|