[关闭]
@fiy-fish 2015-07-14T11:33:20.000000Z 字数 1914 阅读 1100

day02-02-类方法

Objective-c


  1. // main.m
  2. // day02-02-类方法
  3. //
  4. // Created by Aaron on 15/7/2.
  5. // Copyright (c) 2015年 Aaron. All rights reserved.
  6. //
  7. #import <Foundation/Foundation.h>
  8. #import "Dog.h"
  9. typedef struct
  10. {
  11. int number;
  12. }STD;
  13. #if 0
  14. int main(int argc, const char * argv[]) {
  15. @autoreleasepool {
  16. //+ 开头的方法 叫做类方法 由类来调用
  17. Dog *dog = [[Dog alloc]init];
  18. //Class 类类型的指针
  19. Dog *dog1 = [[Dog alloc]init];
  20. [Dog test1];
  21. }
  22. return 0;
  23. }
  24. #endif
  25. //实现一个计算器类,计算两个数字的加减乘除
  26. #import "JiSuanQi.h"
  27. int main()
  28. {
  29. JiSuanQi *jSQ = [[JiSuanQi alloc] init];
  30. [jSQ setNum1:10];
  31. [jSQ setNum2:9];
  32. [jSQ setC:'-'];
  33. NSLog(@"%ld",[jSQ jiSuan]);
  34. NSLog(@"%ld",[JiSuanQi jiSuanNum1:10 andC:'*' andNum2:9]);
  35. }

  1. #import <Foundation/Foundation.h>
  2. @interface JiSuanQi : NSObject
  3. {
  4. NSInteger _num1;
  5. NSInteger _num2;
  6. char _c;
  7. }
  8. -(void)setNum1:(NSInteger)num;
  9. -(void)setNum2:(NSInteger)num;
  10. -(void)setC:(char)c;
  11. //-(NSInteger)add;
  12. -(NSInteger)jiSuan;
  13. +(NSInteger)jiSuanNum1:(NSInteger)num1 andC:(char)c andNum2:(NSInteger)num2;
  14. @end

  1. #import "JiSuanQi.h"
  2. @implementation JiSuanQi
  3. -(void)setNum1:(NSInteger)num
  4. {
  5. if(_num1 != num)
  6. {
  7. _num1 = num;
  8. }
  9. }
  10. -(void)setNum2:(NSInteger)num
  11. {
  12. if(_num2 != num)
  13. {
  14. _num2 = num;
  15. }
  16. }
  17. -(void)setC:(char)c
  18. {
  19. if(_c != c)
  20. {
  21. _c = c;
  22. }
  23. }
  24. -(NSInteger)jiSuan
  25. {
  26. switch(_c)
  27. {
  28. case '+':return _num1+_num2;
  29. case '-':return _num1-_num2;
  30. case '*':return _num1*_num2;
  31. case '/':return _num1/_num2;
  32. }
  33. return 0;
  34. }
  35. NSInteger num = 0;
  36. +(NSInteger)jiSuanNum1:(NSInteger)num1 andC:(char)c andNum2:(NSInteger)num2
  37. {
  38. switch(c)
  39. {
  40. case '+':return num1+num2;
  41. case '-':return num1-num2;
  42. case '*':return num1*num2;
  43. case '/':return num1/num2;
  44. }
  45. return 0;
  46. }
  47. @end

  1. #import <Foundation/Foundation.h>
  2. @interface Dog : NSObject
  3. {
  4. NSInteger _weight;
  5. }
  6. +(void)test1;
  7. @end

  1. #import "Dog.h"
  2. @implementation Dog
  3. +(void)load
  4. {
  5. NSLog(@"加载类");
  6. }
  7. +(void)initialize
  8. {
  9. NSLog(@"创建类对象");
  10. }
  11. +(void)test1
  12. {
  13. //类方法里面不能直接使用实例变量,因为实例变量属于对象
  14. //类方法不依赖于实例变量,所以对于一些工具类,可以直接用类方法来实现
  15. NSLog(@"调用+test1");
  16. //想要在类方法中使用实例变量
  17. //不能通过self来使用,要通过对象来使用
  18. Dog *dog = [[Dog alloc] init];
  19. dog->_weight = 0;
  20. //类方法里面可以直接使用self调用类方法
  21. //但是想要调用实例方法,则需要提供对象,利用对象来调用实例方法
  22. [dog test1];
  23. }
  24. //类方法和实例方法同名是允许的,因为符号不同
  25. -(void)test1
  26. {
  27. //实例方法里面调用类方法,直接用类名来调用就可以了
  28. NSLog(@"-test1");
  29. }
  30. @end

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注