博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-C:动态绑定
阅读量:5734 次
发布时间:2019-06-18

本文共 4156 字,大约阅读时间需要 13 分钟。

 
1 //  Complex.h  2 //  03-动态绑定  3 //  4 //  Created by ma c on 15/8/11.  5 //  Copyright (c) 2015年. All rights reserved.  6 //  7   8 #import 
9 10 @interface Complex : NSObject 11 @property(nonatomic,assign)CGFloat real;//实部 12 @property(nonatomic,assign)CGFloat imag;//虚部 13 -(instancetype)initWithReal:(CGFloat)r andImag:(CGFloat)i; 14 -(Complex *)add:(Complex *)c; 15 -(void)print; 16 @end 17 18 // Complex.m 19 // 03-动态绑定 20 // 21 // Created by ma c on 15/8/11. 22 // Copyright (c) 2015年 bjsxt. All rights reserved. 23 // 24 25 #import "Complex.h" 26 27 @implementation Complex 28 -(instancetype)initWithReal:(CGFloat)r andImag:(CGFloat)i 29 { 30 self = [super init]; 31 if(self) 32 { 33 _real = r; 34 _imag = i; 35 } 36 return self; 37 } 38 -(Complex *)add:(Complex *)c 39 { 40 CGFloat r = _real+c.real; 41 CGFloat i = _imag+c.imag; 42 return [[Complex alloc]initWithReal:r andImag:i]; 43 } 44 -(void)print 45 { 46 NSLog(@"%.2f*%.2fi",_real,_imag); 47 } 48 @end 49 50 // Fraction.h 51 // 03-动态绑定 52 // 53 // Created by ma c on 15/8/11. 54 // Copyright (c) 2015年. All rights reserved. 55 // 56 57 #import
58 59 @interface Fraction : NSObject 60 61 @property(nonatomic,assign)NSInteger numerator;//分子 62 @property(nonatomic,assign)NSInteger denominator;//分母 63 -(id)initWithNumerator:(NSInteger)n addDenominator:(NSInteger) d; 64 -(Fraction*) add:(Fraction*) fraction; 65 -(void)print; 66 @end 67 68 // Fraction.m 69 // 03-动态绑定 70 // 71 // Created by ma c on 15/8/11. 72 // Copyright (c) 2015年 bjsxt. All rights reserved. 73 // 74 75 #import "Fraction.h" 76 77 @implementation Fraction 78 -(id)initWithNumerator:(NSInteger)n addDenominator:(NSInteger) d 79 { 80 self = [super init]; 81 if(self) 82 { 83 _numerator = n; 84 _denominator = d; 85 } 86 return self; 87 } 88 -(Fraction*) add:(Fraction*) fraction 89 { 90 NSInteger n = _numerator*fraction.denominator+fraction.numerator*_denominator; 91 NSInteger d = _denominator*fraction.denominator; 92 93 return [[Fraction alloc]initWithNumerator:n addDenominator:d]; 94 } 95 -(void)print 96 { 97 NSLog(@"%ld/%ld",_numerator,_denominator); 98 } 99 @end100 101 102 // main.m103 // 03-动态绑定104 //105 // Created by ma c on 15/8/11.106 // Copyright (c) 2015年. All rights reserved.107 //108 109 #import
110 #import "Fraction.h"111 #import "Complex.h"112 int main(int argc, const char * argv[])113 {114 @autoreleasepool115 {116 //测试分数类117 Fraction *f1 = [[Fraction alloc]initWithNumerator:1118 addDenominator:2];119 [f1 print];120 121 Fraction *f2 = [[Fraction alloc]initWithNumerator:2122 addDenominator:3];123 [f2 print];124 125 Fraction *f3 = [f1 add:f2];126 [f3 print];127 128 //测试复数类129 Complex *c1 = [[Complex alloc]initWithReal:5.0 andImag:3.0];130 [c1 print];131 132 Complex *c2 = [[Complex alloc]initWithReal:4.3 andImag:2.5];133 [c2 print];134 135 Complex *c3 = [c1 add: c2];136 [c3 print];137 138 139 //测试动态绑定140 id pObj = nil;141 pObj = f3;142 [f3 print];143 144 pObj = c3;145 [c3 print];146 147 id arr[3] = {c1,f1,@""};148 for(int i=0;i<3;i++)149 {150 //运行时检查151 /*if([arr[i] isKindOfClass:[Fraction class]]==YES || [arr[i] isKindOfClass:[Complex class]]==YES)152 */153 if([arr[i] respondsToSelector:@selector(print)]==YES)154 {155 [arr[i] print];156 //SEL sel = @selector(print);157 //[arr[i] performSelector:@selector(print)];158 }159 160 161 }162 }163 return 0;164 }
 

 

 

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4721362.html,如需转载请自行联系原作者
你可能感兴趣的文章
HTML5区域范围文本框实例页面
查看>>
oracle查看经常使用的系统信息
查看>>
技术工坊|如何利用ERC875协议开发世界杯区块链门票?(北京)
查看>>
Django_4_视图
查看>>
Linux的netstat命令使用
查看>>
shell实例100例《五》
查看>>
lvm讲解,磁盘故障小案例
查看>>
24.5 saltstack远程执行命令
查看>>
配置IP
查看>>
大快网站:如何选择正确的hadoop版本
查看>>
经过这5大阶段,你离Java程序员就不远了!
查看>>
Nginx配置文件相关操作
查看>>
IntelliJ IDEA 连接数据库详细过程
查看>>
thymeleaf 学习笔记-基础篇
查看>>
分享话题列表
查看>>
PHP-X开发扩展
查看>>
android学习笔记——onSaveInstanceState的使用
查看>>
Windows Server 2003下cwRsyncServer服务端与cwRsync客户端数据
查看>>
iOS 打包上传没有用到日历,但是提示需要在info.plist文件中加入NSCalendarsUsageDescription...
查看>>
工作中如何做好技术积累
查看>>