Objective-C:动态绑定
2015-08-11 16:20
513 查看
//Complex.h //03-动态绑定 // //Createdbymacon15/8/11. //Copyright(c)2015年.Allrightsreserved. // #import<Foundation/Foundation.h> @interfaceComplex:NSObject @property(nonatomic,assign)CGFloatreal;//实部 @property(nonatomic,assign)CGFloatimag;//虚部 -(instancetype)initWithReal:(CGFloat)randImag:(CGFloat)i; -(Complex*)add:(Complex*)c; -(void)print; @end //Complex.m //03-动态绑定 // //Createdbymacon15/8/11. //Copyright(c)2015年bjsxt.Allrightsreserved. // #import"Complex.h" @implementationComplex -(instancetype)initWithReal:(CGFloat)randImag:(CGFloat)i { self=[superinit]; if(self) { _real=r; _imag=i; } returnself; } -(Complex*)add:(Complex*)c { CGFloatr=_real+c.real; CGFloati=_imag+c.imag; return[[Complexalloc]initWithReal:randImag:i]; } -(void)print { NSLog(@"%.2f*%.2fi",_real,_imag); } @end //Fraction.h //03-动态绑定 // //Createdbymacon15/8/11. //Copyright(c)2015年.Allrightsreserved. // #import<Foundation/Foundation.h> @interfaceFraction:NSObject @property(nonatomic,assign)NSIntegernumerator;//分子 @property(nonatomic,assign)NSIntegerdenominator;//分母 -(id)initWithNumerator:(NSInteger)naddDenominator:(NSInteger)d; -(Fraction*)add:(Fraction*)fraction; -(void)print; @end //Fraction.m //03-动态绑定 // //Createdbymacon15/8/11. //Copyright(c)2015年bjsxt.Allrightsreserved. // #import"Fraction.h" @implementationFraction -(id)initWithNumerator:(NSInteger)naddDenominator:(NSInteger)d { self=[superinit]; if(self) { _numerator=n; _denominator=d; } returnself; } -(Fraction*)add:(Fraction*)fraction { NSIntegern=_numerator*fraction.denominator+fraction.numerator*_denominator; NSIntegerd=_denominator*fraction.denominator; return[[Fractionalloc]initWithNumerator:naddDenominator:d]; } -(void)print { NSLog(@"%ld/%ld",_numerator,_denominator); } @end //main.m //03-动态绑定 // //Createdbymacon15/8/11. //Copyright(c)2015年.Allrightsreserved. // #import<Foundation/Foundation.h> #import"Fraction.h" #import"Complex.h" intmain(intargc,constchar*argv[]) { @autoreleasepool { //测试分数类 Fraction*f1=[[Fractionalloc]initWithNumerator:1 addDenominator:2]; [f1print]; Fraction*f2=[[Fractionalloc]initWithNumerator:2 addDenominator:3]; [f2print]; Fraction*f3=[f1add:f2]; [f3print]; //测试复数类 Complex*c1=[[Complexalloc]initWithReal:5.0andImag:3.0]; [c1print]; Complex*c2=[[Complexalloc]initWithReal:4.3andImag:2.5]; [c2print]; Complex*c3=[c1add:c2]; [c3print]; //测试动态绑定 idpObj=nil; pObj=f3; [f3print]; pObj=c3; [c3print]; idarr[3]={c1,f1,@""}; for(inti=0;i<3;i++) { //运行时检查 /*if([arr[i]isKindOfClass:[Fractionclass]]==YES||[arr[i]isKindOfClass:[Complexclass]]==YES) */ if([arr[i]respondsToSelector:@selector(print)]==YES) { [arr[i]print]; //SELsel=@selector(print); //[arr[i]performSelector:@selector(print)]; } } } return0; }
相关文章推荐
- 详解Objective-C runtime
- public static T CloneObject<T>(this T obj) where T:class{}
- JS - Object and Property的删除用法
- 再探Java基础——String.format(String format, Object… args)的使用
- Objective-C学习笔记
- Objective-C Runtime 运行时
- html5的FormData对象和input的file属性以及window.URL.createObjectURL( ) 方法
- NSMutableArray在removeAllObjects时崩溃
- Java object类型转换为int类型
- Java中Object转化为int类型
- ObjectARX获取实体个数
- 每日20行之3~~~ThreadPool之RegisterWaitForSingleObject 自动定时执行(可循环)
- IOS学习笔记04-Swift语言与Objective-C语言混合编程
- Android Volley框架(一):StringRequest、JsonObjectRequest、JsonArrayRequest
- error LNK2019: 无法解析的外部符号 _cvHaarDetectObjects,该符号在函数 "void __cdecl detect_and_draw(struct _IplImage
- [Objective-C] 015_Delegate(委托代理)
- Object-C类目、延展
- WebView注入Java对象注意事项 [INFO:CONSOLE(475)] "Uncaught TypeError: Object [object Object] has no method
- ObjectARX创建文字
- objective-c类以及方法调用的基本总结