您的位置:首页 > 移动开发 > Objective-C

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;
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: